Я использую SQL Server 2008, и у меня возникла эта проблема.
У меня есть таблица, в которой есть поле задания, поле даты и поле стоимости.Поле даты содержит даты, когда работа была выполнена для определенной работы, в то время как поле стоимости содержит сумму, потраченную на эту дату (работа может быть выполнена за несколько дней для одной работы)
Я хочу создать оператор выборатаким образом, что я получаю сумму затрат, потраченных между 0-7 и 8-30 днями на открытие работы в разных столбцах.
Я пробовал это:
select a.[Job No_], DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) as [WIP Age],
SUM(b.[Total Cost])[Total WIP cost]
[0 - 7 days]=case
when (DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) between 1 and 7) then
SUM(b.[Total Cost])
else 0
end,
[8 - 30 days]=case
when (DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) between 8 and 30) then
SUM(b.[Total Cost])
else 0
end,
[> 30 days]=case
when (DATEDIFF(day, MIN(b.[Posting Date]), a.[Ending Date]) > 30) then
SUM(b.[Total Cost])
else 0
end
from [Job]a
right join [Job Ledger Entry]b
on b.[Job No_] = a.[No_]
group by a.[No_]
Отображает результат, аналогичныйэто:
Job No_ WIP Age Total WIP cost 0 - 7 days 8 - 30 days > 30 days
0001 40 9526.18 0 0 9526.18
0002 27 1178.49 0 1178.49 0
0003 3 2838.94 2838.94 0 0
Это не то, что я хочу, я хочу, чтобы все расходы были потрачены между 0 - 7 днями, 8 - 30 днями и> 30 днями соответственно.