2016-08-08 14 views
0

この質問は、以前のものの拡張であり、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; 

私の2番目のテーブルは以下のようになります。

enter image description here

今回は、私がブレークテーブルからtotalbreaktimeの合計(最初のスクリーンショット)で休憩列を更新したいと条件が日付にする必要があり、現在の日になることです。

私は本当にこれを行う方法を理解することができません。

+1

Google「MERGE」 –

+0

SQLサーバを使用しています – user3872094

+0

'Breaks'カラムのデータ型は? –

答えて

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 

しかし、これはあなたがあなたのsecondtableの各USERIDための1つの列のみを持っている場合にのみ動作しますが、そうでないあなたが役立ちます、クエリのON一部に別のキーkolumnを追加する必要があります行をユニークにする。

+0

こんにちはgofr1 whats '--your query'は? – user3872094

+0

@ user3872094 'USERID'と' Breaks'の合計を与えるクエリです。 F.e. 'SELECT USERID、SUM(Breaks)ColumnWithBreaksCount From FirstTable GROUP BY USERID' – gofr1

+0

すべてのユーザーIDの合計を数えるサンプルからクエリを追加します – gofr1

関連する問題