0
これは以前の質問(Getting an exception with datetime diff)の拡張ですが、今度はtotalbreaktime
をfloat
にしました。これは私の新しいクエリです。クエリを実行すると集計関数の例外が発生します
MERGE Time_Tracker as target using (SELECT USERID, cast(DATEDIFF(second,starttime,endtime)/60.0 as numeric(36,2)) 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;
今回、このクエリを実行すると、次の例外が発生します。
Msg 8120, Level 16, State 1, Line 1
Column 'BreaksTable.StartTime' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Msg 8120, Level 16, State 1, Line 1
Column 'BreaksTable.EndTime' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
問題:
- 私の前の質問で述べたように、私は、日付に基づいて
breakstable.totalbreaktime
の和として私のTime_tracker.breaks
を更新したいです。 - クエリを実行すると(前のクエリ)、現在の日付のデータではなくすべてのデータが考慮されています。
私のテーブルのデータは以下の通りです。
Time_Tracker
BreaksTable
私が間違っているつもりどこは私に教えてください、私はこれをどのように修正することができます。
おかげ
こんにちは友達が、これは素晴らしい働いたが、私は 'WHERE'のような' CONVERTを行うことができないんだ小さな問題があります(Date、BreaksTable.StartTime)= CONVERT(Date、Time_Tracker.Login) '、これを実行すると、 'WHERE'というキーワードの近くに不正な構文があります。 – user3872094