週をレポートに分割する必要があり、週は月曜日から日曜日です。たとえば、start_date
を01-12-2012
、end_date
を29-12-2011
とします。今週は1st4をweek1、5th-11thをweek2、12th-18thをweek3、19th-25thをweek4、26th-29thをweek5に分割したいと思います。SQL Serverの指定された日付間で週ごとにレポートを作成
私は次のコードを試しましたが、正確な情報が得られませんでした。変更や提案は感謝します。前もって感謝します。
SELECT
ta.account, ta.customer,
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1) = '1'
THEN amount END),0) AS "1",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1)= '2'
AND (datepart(dw,ta.dt)= 1)
THEN amount END),0) AS "1",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1)= '2'
AND (datepart(dw,ta.dt)<> 1)
THEN amount END),0) AS "2",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1)= '3'
AND (datepart(dw,ta.dt) = 1)
THEN amount END),0) AS "2",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1)= '3'
AND (datepart(dw,ta.dt)<> 1)
THEN amount END),0) AS "3",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1) = '4'
AND (datepart(dw,ta.dt) = 1)
THEN amount END),0) AS "3",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1) = '4'
AND (datepart(dw,ta.dt) <> 1)
THEN amount END),0) AS "4",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1) = '5'
AND (datepart(dw,ta.dt) = 1)
THEN amount END),0) AS "4",
isnull(sum(CASE WHEN (datepart(wk, ta.dt)- datepart(wk,dateadd(m, DATEDIFF(M, 0, ta.dt), 0))+ 1) = '5'
AND (datepart(dw,ta.dt) <> 1)
THEN amount END),0) AS "5"
FROM
(SELECT * FROM tablename
WHERE dt >= '12/01/2011 00:00:00' AND dt < '12/26/2011 00:00:00'
) ta
GROUP BY
ta.account, ta.customer
希望O/pは次のとおりです。
アカウントカスタマーWeek1 Week2 Week3 Week4 Week5
上記の日付については、 week1は、第一、第四 week2あるべき第五、第11回 する必要があります週2は12日から18日まで 週2は19日から25日まで 週2日は2012年1月26日から
毎週月曜日、月曜日から日曜日までの合計額を1週間としたい。
お客様には利用できない場合があります。だから、その場合、私は上記の例ではweek5のように0.00にしたいと思っています。
私の質問を理解していただきたいと思います。おかげ
こんにちは、私はほとんど得ました。しかし、私は今年の週は印刷しません。私の週は月曜日から日曜日までです。今年の12月には、week1は1日目から4日目、week2は5日目から11日目などと言いましょう。最後に、week5は26〜31になるはずです。 – sandysmith
@sandysmith申し訳ありませんが、私はあなたのコメントを非常に理解していませんでした。私の例では 'SUM'は週単位で計算され、第1週目は' dt> = '12/01/2011 00:00:00 'の行だけに 'amount'が取り込まれます。これらの週を列にしたいですか?あなたがあなたの質問に望ましい出力を提供していれば(あなたはそれを編集することができます)、それは素晴らしいことでしょう。 –
私はちょうど私の質問を編集する。あなたが正しいです。私はo/pをweek1からweek5のようにしたい。 – sandysmith