这个问题是我之前在Unable know the exception in query提供的问题的扩展。
这次我有另一张名为休息的桌子。
它看起来像下面。
我可以使用以下查询获得列总和。
SELECT DATEADD(SECOND, SUM(DATEDIFF(SECOND, '19000101', TotalBreakTime)), '19000101') where
where USERID = 0138039 AND CONVERT(Date, StartTime) = CONVERT(Date, GETDATE()))
as t FROM BreaksTable;
我的第二张表如下所示。
这一次,我想用Breaks表中的totalbreaktime
(第一个屏幕截图)的总和来更新break列,条件必须是当前日期的日期。
我真的无法理解如何做到这一点。
答案 0 :(得分:1)
您需要MERGE:
MERGE SecondTable as target
USING (
SELECT USERID,
SUM(DATEDIFF(SECOND, '19000101', TotalBreakTime)) as ColumnWithBreaksCount
FROM BreaksTable
where CONVERT(Date, StartTime) = CONVERT(Date, GETDATE()))
GROUP BY USERID) as source
ON target.USERID = source.USERID
WHEN MATCHED THEN UPDATE
SET BREAKS = source.ColumnWithBreaksCount
但是,只有在第二个表格中每个USERID
只有一列时,这才有效,否则您需要在查询的ON
部分添加另一个键列,这将有助于使行唯一