Запрос SQL Server для расчета общего количества недель в названии месяца - PullRequest
1 голос
/ 18 марта 2011

Мне нужно создать отчет, в котором я просто передам месяц (февраль) и год (2011) и хочу sum(total), но желаемый результат будет таким ... Я не знаю, как рассчитать общее количество за неделю

Week-1......Week-2......Week-3......Week-4....Total 
---------------------------------------------------

1 Ответ

0 голосов
/ 18 марта 2011

Рабочий пример

Пример таблицы, содержит всего 2 столбца thedate datetime, amount numeric

select cast(datediff(d, number%1000, getdate()) as datetime) as thedate, number as amount
into testtable
from master..spt_values

Запрос, принимающий в качестве параметров месяц и год

declare @month int, @year int
select @month = 2, @year = 2011

select *
from
(
select
    amount,
    'Week-' + right(dense_rank() over (order by datepart(wk, thedate)),1) week_in_month
from testtable
where thedate >= cast(@year*10000+@month*100+1 as char(8))
  and thedate <  dateadd(m,1,cast(@year*10000+@month*100+1 as char(8)))
) P
pivot (sum(amount) for week_in_month in ([Week-1],[Week-2],[Week-3],[Week-4],[Week-5])) V

Примечание:

  • cast(@year*10000+@month*100+1 as char(8)): первый день месяца
  • dateadd(m,1,..): первый день месяца после
...