0
ことで、私は次のようしているSQLクエリ:SQLグループ条件
SELECT CASE
WHEN CAST(tDate as DATE) < CAST(GETDATE() as date) -- if older then Today
THEN DATEADD(dd,-1,CAST(GETDATE() as date)) -- assgin yesterday's date
ELSE CAST(tDate as date) -- use the date
END as tDate,
SUM(tDuration-ISNULL(tDone,0)) as tToDo FROM tTable
WHERE .....conditions.....
GROUP BY tDate
ORDER BY tDate
私はそれには二つの問題があります:私は成功する
私は昨日までにSUM()
に過去のタスクの期間のすべてを試みたが、しかし、GROUP BY
はそれらを1つの日付に合計しません。別々の行に残ります。なぜ私は日時入力を今日までキャストして、それらが等しい値を持つべきかわからない。
CAST
の代わりにCONVERT
を使用し、処理をサブクエリに分割して改善しませんでした。
項目#1の場合、あなたは時間コンポーネントなしでグループ化したいならば、あなたは同様にあなたの 'GROUP BY'でそのロジックを持っている必要があります。それ以外の場合は、SQLに 'tDate'全体をグループに分割するように指示しています。それが忠実に実行されます。また、どのRDBMSを使用していますか?タグを付けてください。 –
トム、これは正しいです、私は何とかそれを忘れました。テストされ、それは動作します。 –