我需要一些幫助,因爲我卡住了。這是使用SQL和Coldfusion。 基本上我有一張表,列出了某些門票的完成情況以及他們被標記爲完整的日期。例如,該表具有在GROUP BY中使用的區域和區域。因此,我想要計算每年每週都完成的每張票,用戶選擇例如運行該報告。 我將列出我目前擁有的一些SQL。輸出一週中某些列的總和,一年中一週,一週的日期與日期一致
SELECT
SUM(CASE WHEN DATEPART(ww, completionDate) = 1 THEN 1 ELSE 0 END) AS [Jan1-7],
SUM(CASE WHEN DATEPART(ww, completionDate) = 2 THEN 1 ELSE 0 END) AS [Jan8-14],
SUM(CASE WHEN DATEPART(ww, completionDate) = 3 THEN 1 ELSE 0 END) AS [Jan15-21],
SUM(CASE WHEN DATEPART(ww, completionDate) = 4 THEN 1 ELSE 0 END) AS [Jan22-31]
SUM(CASE WHEN DATEPART(ww, completionDate) = 5 THEN 1 ELSE 0 END) AS [Feb1-7],
SUM(CASE WHEN DATEPART(ww, completionDate) = 6 THEN 1 ELSE 0 END) AS [Feb8-14],
SUM(CASE WHEN DATEPART(ww, completionDate) = 7 THEN 1 ELSE 0 END) AS [Feb15-21],
SUM(CASE WHEN DATEPART(ww, completionDate) = 8 THEN 1 ELSE 0 END) AS [Feb22-28],
正如你所看到的,我基本上試圖抓住completionDate的一年中的哪一週,並且在它自己的列中求和。它應該採用這種格式,除非有人有更好的建議。 例如,2013年2月18日的問題是,SQL告訴我這將是2013年的第8周,而我的代碼將根據我的代碼在FEB15-21中得出結果,即第7周。 我需要的報表是在頂部標題中顯示月份,然後在每個月的下一個標題中顯示每週,然後基本完成該周內完成的每張票的計數。所以周/月需要成爲專欄。
我已經閱讀了一些CF函數和所有,但只是不知道如何利用它們來獲得我所需要的。 有沒有一種方法可以動態地求和這些日期,以確保它們在基於星期的正確列中爲SUMMED,或使用Coldfusion來處理這部分?但是我對ColdFusion部分也不太確定,所以如果可能的話,任何關於使用SQL或CF的建議,或許可以幫助我完成代碼部分,我都會非常感激。
謝謝!
Jan22-31怎麼可能是一週,這是9天.... – ljh 2013-03-21 06:22:20
爲什麼你的周不是實際的星期? – 2013-03-21 13:12:50
請參閱[此問題]的答案(http://stackoverflow.com/questions/15515679/select-with-count-for-years/15515954#15515954)。這個答案是基於按月收集日期,但它很容易適應幾周(或幾天或幾小時等)。 – 2013-03-21 04:51:35