SQL Server сводные записи даты и времени - PullRequest
0 голосов
/ 27 июня 2018

Когда я выполняю следующую инструкцию:

select *
from data
where startdate >= '4/06/2018' and enddate <= '11/06/2018'

Я получаю эти результаты:

enter image description here

Я хотел бы получить этот результат в SQL Server:

pivot

Возможно ли это в SQL Server? Я не уверен, нужно ли мне использовать пивот или нет?

Заранее спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Если у вас нет календарной таблицы или таблицы подсчета, вы можете использовать специальную таблицу подсчета вместе с LEFT JOIN

Пример

Declare @Date1 date = '2018-06-04'
Declare @Date2 date = '2018-06-11'

Select A.[Date]
      ,Val = sum(isnull(B.Val,0))
 From (
        Select Top (DateDiff(DAY,@Date1,@Date2)+1) [Date]=DateAdd(DAY,-1+Row_Number() Over (Order By (Select Null)),@Date1) 
         From  master..spt_values n1,master..spt_values n2
      ) A
 Left Join YourTable B 
  on  A.[Date] >= B.StartDate and A.[Date] < B.EndDate
 Group By A.[Date]
 Order by A.[Date]

Returns

Date        Val
2018-06-04  0
2018-06-05  2
2018-06-06  2
2018-06-07  3
2018-06-08  3
2018-06-09  0
2018-06-10  0
2018-06-11  0
...