Мне нужно разделить отчет по рабочей неделе, а рабочая неделя - с понедельника по воскресенье.Допустим, я даю start_date
как 01-12-2012
и end_date
как 29-12-2011
.Теперь я хочу разделить 1-4 числа как недели 1, 5-11 числа как недели 2, 12-18 числа как недели 3, 19-25 числа как недели 4, 26-29 числа как недели 5.
Я пробовал следующий код, ноне получить точный.Любые изменения или предложения будут благодарны.Заранее благодарим.
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:
Счет клиента неделя1 неделя2 неделя3 неделя4 неделя5
Для указанных выше дат неделя 1 должна быть 1-4-я неделя2 должна быть 5-11-й недели2 должна быть 12-18-я неделя2 должна быть 19-25-я неделя2 должна быть 26-го (январь 2012 г.)
Поскольку я делаю отчет каждый понедельник, мне нужна общая суммас понедельника по воскресенье как одна неделя.
Может случиться так, что клиент не сможет использовать его.Итак, в этом случае я хочу, чтобы в приведенном выше примере она равнялась 0,00, как и неделе 5.
Надеюсь, вы понимаете мой вопрос.Спасибо