我有如下數據表:在SQL查詢時需要幫助
TaskId StartDate TargetEnd TaskStatus 1 2011-01-01 2011-02-05 completed 2 2011-02-05 2011-02-05 ongoing 3 2011-02-04 2011-04-04 completed 4 2011-04-04 2011-04-04 completed 5 2011-04-06 2011-04-30 ongoing
我創建了一個查詢在那裏我能得到的總完成每月日常任務:
SELECT YEAR(TargetEnd) 'YEAR',
MONTHNAME(TargetEnd) 'MONTH',
SUM(IF(TaskStatus = 'ongoing',1,0)) 'ONGOING',
SUM(IF(TaskStatus = 'completed',1,0)) 'COMPLETED',
COUNT(TaskId) 'TOTAL' FROM Task_Table GROUP BY YEAR(TargetEnd), MONTH(TargetEnd)
,其結果是:
YEAR MONTH ONGOING COMPLETED TOTAL 2011 January 0 1 1 2011 February 0 1 2 2011 April 1 2 3
但我的要求是添加任務#2的ONGOING
一部分,而任務仍然是「進行中」,從TargetEnd
個月,直到當前月份(2月 - 4月)。預計應該是這樣的:
YEAR MONTH ONGOING COMPLETED TOTAL 2011 January 0 0 0 2011 February 1 1 1 2011 March 1 0 1 2011 April 2 2 4
你能給我一個想法,我該如何做到這一點?我感謝任何幫助。謝謝。
我編輯了上面的預期結果。應該沒有1月份的計數,因爲計數完全基於TargetEnd的月份。
它可能只是我,但你能否給出你希望如何處理每個輸入記錄的例子,以及它如何提供給你最終的例子結果? – MatBailie 2011-04-07 11:17:23
我想你不得不搜索表中的月份,從表中的_first_月開始搜索,直到NOW(),然後做一堆連接,比較每行中的各種值WRT這個月正在迭代。 – 2011-04-07 11:21:41