[英]SQL Update with where clause has group by and having statements
我正在尝试更新与我的WHERE子句条件匹配的所有行上的导出列,而正在更新所有行
这是我到目前为止的
Create table Temp (
Employeeid nvarchar(10),
Punchtype nvarchar (2),
Date Date,
TotalTime decimal (16,2),
Job nvarchar(10),
Exported bit not null Default 0)
Insert Into Temp (Employeeid,Punchtype,Date,TotalTime,Job)
Values ('1234','C','4/24/2017',4,'J1234'), ('1234','RW','4/24/2017',4,'J1234'),('4563','C','4/24/2017',2,'J1234'), ('4563','C','4/24/2017',5,'J1234')
Update temp set exported = 1 where exists ( select null from temp group by employeeid,Date,Job having Min(punchtype) = MAX(punchtype))
您可以使用CTE
和窗口功能:
WITH CTE AS
(
SELECT *,
MIN(punchtype)
OVER(PARTITION BY employeeid, [Date], Job) Min_punchtype,
MAX(punchtype)
OVER(PARTITION BY employeeid, [Date], Job) Max_punchtype
FROM Temp
)
UPDATE CTE
SET exported = 1
WHERE Min_punchtype = Max_punchtype
;
尝试使用此更新:
Update temp set exported = 1 where temp.Employeeid = ( select temp.Employeeid from temp group by employeeid,Date,Job having Min(punchtype) = MAX(punchtype) );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.