2017-02-01 4 views
2

私は選択のために次の文を持っています。 [フラグ]の値は、この後に「いいえ」MS ACCESSのグループ内で最小値を持つ行を更新してください

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] 

にデフォルト設定されている、私は私がにこれを組み合わせることができますどのように

update [EmployeeMaster] set [EmployeeMaster].[Flag] = 'Yes' 

で上記のselect文のすべての結果を更新する必要がありますMS ACCSS VBAスクリプトの1クエリ?

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 

答えて

1

を、あなたは

基本的に私が達成したかったが、次のEmployeeMasterテーブルの一例を与えられたということです更新ステートメントで集計を使用することはできません。これは、以下のエラーを生成するためです。

Operation must use an updatable query.

代わりに、単純な自己結合を使用して、各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 
+0

この仕事を完璧に!ありがとうございました! – user1688194

関連する問題