Как создать сводную таблицу SQL Server - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать таблицу SQL Server PIVOT, но у меня возникли проблемы.

Вот результат, который я хочу получить:

enter image description here

Вот SQL-запрос, который я подготовил, но я потерян.Как я могу заставить это работать.

select *
from
    (select DESCRIPTION_, DISPLAYNAME, SUCCESFULRECORDCOUNT, FINISHDATETIME
     from LOGTABLE (NOLOCK)
    ) as X
pivot
     (sum(SUCCESFULRECORDCOUNT) for FINISHDATETIME in (GETDATE()-4)) as DAY1
pivot
     (sum(SUCCESFULRECORDCOUNT) for FINISHDATETIME in (GETDATE()-3)) as DAY2
pivot
     (sum(SUCCESFULRECORDCOUNT) for FINISHDATETIME in (GETDATE()-2)) as DAY2
pivot
     (sum(SUCCESFULRECORDCOUNT) for FINISHDATETIME in (GETDATE()-1)) as DAY3

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

я думаю, что вы можете просто использовать группу как

SELECT DESCRIPTION_,DISPLAYNAME
,SUM(IIF(FINISHDATETIME IN (GETDATE()-4),SUCCESFULRECORDCOUNT,0)) AS 'DAY1'
,SUM(IIF(FINISHDATETIME IN (GETDATE()-3),SUCCESFULRECORDCOUNT,0)) AS 'DAY2'
,SUM(IIF(FINISHDATETIME IN (GETDATE()-2),SUCCESFULRECORDCOUNT,0)) AS 'DAY3'
,SUM(IIF(FINISHDATETIME IN (GETDATE()-1),SUCCESFULRECORDCOUNT,0)) AS 'DAY4'
FROM LOGTABLE  (NOLOCK)
GROUP BY 
DESCRIPTION_,
DISPLAYNAME
0 голосов
/ 10 декабря 2018

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=915122598b6f8f350127f79e21b3c12c

Вам необходимо изменить даты в буквальные значения для использования в сводной таблице.

SELECT
  *
FROM
(
  SELECT
    DESCRIPTION_,
    DISPLAYNAME,
    CAST(DATEDIFF(DAY, FINISHDATETIME, GETDATE()) AS VARCHAR(1))  AS dateNum,
    SUCCESFULRECORDCOUNT
  FROM
    test
  WHERE
    FINISHDATETIME >= CAST(DATEADD(DAY, -4, GETDATE()) AS DATE)
)
  data
PIVOT
(
  SUM(SUCCESFULRECORDCOUNT) FOR dateNum IN ([4], [3], [2], [1])
)
  pvt
;
...