Selectについて次のステートメントがあります。[フラグ]の値はデフォルトで「いいえ」になっています
select t.[Id], t.[Name], t.[NRIC], t.[Flag], t.[Hierarchy], t.[LoadDt]
from [EmployeeMaster] t
inner join (
select ID, LoadDt, Min(Hierarchy) As MinHierarchy
from [EmployeeMaster]
group by ID, LoadDt
) s on t.[ID] = s.[ID] and t.[Hierarchy] = s.[MinHierarchy]
この後、上記のselectステートメントのすべての結果を次のように更新する必要があります
update [EmployeeMaster] set [EmployeeMaster].[Flag] = 'Yes'
これをMSACCSS VBAスクリプトで1つのクエリに組み合わせるにはどうすればよいですか?
基本的に私が達成したかったのは、次のEmployeeMasterテーブルの例を示したものです。
ID | Name | NRIC | Flag | Hierarchy | LoadDt
001| ABCD | ZZZZ | NO | 6 | 31/1/2017
001| ABCD | ZZZZ | NO | 5 | 31/1/2017
001| ABCD | ZZZZ | NO | 1 | 31/1/2017
002| WXYZ | YYYY | NO | 9 | 31/1/2017
002| WXYZ | YYYY | NO | 8 | 31/1/2017
次の出力を達成できるようにしたいと思います。
ID | Name | NRIC | Flag | Hierarchy | LoadDt
001| ABCD | ZZZZ | NO | 6 | 31/1/2017
001| ABCD | ZZZZ | NO | 5 | 31/1/2017
001| ABCD | ZZZZ | Yes | 1 | 31/1/2017
002| WXYZ | YYYY | NO | 9 | 31/1/2017
002| WXYZ | YYYY | Yes | 8 | 31/1/2017
アクセスでは、以下のエラーが発生するため、updateステートメントで集計を使用することはできません。
操作は更新可能なクエリを使用する必要があります。
代わりに、単純な自己結合を使用して、各IDの最小階層を持つ行を見つけてから更新を実行します。
これを試して:
UPDATE [EmployeeMaster] t
left join [EmployeeMaster] s
on t.[ID] = s.[ID] and t.[Hierarchy] > s.[Hierarchy]
SET t.[Flag] = 'Yes'
where s.[ID] is null
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加