我有以下Select语句。 [Flag]的值已默认为“No”
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'
如何在MS ACCSS 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
答案 0 :(得分:1)
在访问中,您不能在update语句中使用聚合,因为它会产生以下错误:
操作必须使用可更新的查询。
而是使用简单的自联接为每个id查找具有min Hierarchy的行,然后执行更新。
试试这个:
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