使用另一个表

时间:2016-08-08 11:27:36

标签: sql-server

这个问题是我之前在Unable know the exception in query提供的问题的扩展。

这次我有另一张名为休息的桌子。

它看起来像下面。

enter image description here

我可以使用以下查询获得列总和。

SELECT DATEADD(SECOND, SUM(DATEDIFF(SECOND, '19000101', TotalBreakTime)), '19000101') where 
where USERID = 0138039 AND CONVERT(Date, StartTime) = CONVERT(Date, GETDATE()))
as t FROM BreaksTable;

我的第二张表如下所示。

enter image description here

这一次,我想用Breaks表中的totalbreaktime(第一个屏幕截图)的总和来更新break列,条件必须是当前日期的日期。

我真的无法理解如何做到这一点。

1 个答案:

答案 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部分添加另一个键列,这将有助于使行唯一