2
下面是一個簡單的數據集:TSQL選擇分鐘日期在where子句中
ID DATE STATUS DURATIONTIME
1 30-08-2017 Done 220
1 30-08-2017 In progress 100
1 29-08-2017 In progress 50
1 28-08-2017 New 10
2 30-08-2017 Done 200
2 30-08-2017 In progress 100
2 29-08-2017 In progress 60
2 29-08-2017 New 50
2 28-08-2017 New 10
結果預計:
1 60
2 120
我們要計算的持續時間的總和時狀態不這樣做如果狀態爲「正在進行」,則只將持續時間作爲最早的日期。
下面是該查詢我嘗試:
SELECT ID, SUM(DURATIONTIME)
FROM MYDB
WHERE STATUS <> 'Done'
AND DURATIONTIME = CASE
WHEN (STATUS = 'In progress' AND DATE <> min(DATE))
THEN 0
ELSE DURATIONTIME END
GROUP BY ID ASC
但是查詢失敗......任何想法如何重寫此查詢?
它不工作,因爲其它的狀態可以有相同ID的多條線路,我將修改數據集 –
@ VincentTeyssier - 你需要'DENSE_RANK' ..更新 –
好,但你不計算其他狀態的DURATIONTIME在這裏。 –