Сводные даты в виде строк - PullRequest
1 голос
/ 11 июля 2019

У меня есть что-то вроде этого:

enter image description here

Из этого запроса

SELECT DISTINCT Securitization, SUM(RemittableCollections) [RemittableCollections], ReportingDate
FROM Securitization.dbo.SecuritizationReporting
GROUP BY Securitization,ReportingDate

Я хочу, чтобы в строках были даты отчетности, поэтому в качестве столбцов у меня будет секьюритизация, а затем для каждой отчетной даты у меня будет сумма сборов Remittable, как я могу это сделать?

Это то, что я пытаюсь сделать, но это не работает

SELECT DISTINCT Securitization, ReportingDate
FROM Securitization.dbo.SecuritizationReporting
PIVOT
(
 SUM(RemittableCollections)
 for dates in (SELECT DISTINCT ReportingDate FROM Securitization.dbo.SecuritizationReporting )
)
GROUP BY Securitization,ReportingDate

1 Ответ

1 голос
/ 11 июля 2019

Не проверено, но, возможно, это поможет

Declare @SQL varchar(max) = '
Select *
 From  (Select Distinct 
               Securitization
              ,ReportingDate
              ,RemittableCollections
         From  Securitization.dbo.SecuritizationReporting 
       ) src
 Pivot ( sum(RemittableCollections) for ReportingDate in ( ' + Stuff((Select Distinct 
                                                                             ',' + QuoteName(ReportingDate) 
                                                                       From  Securitization.dbo.SecuritizationReporting 
                                                                       Order By 1 
                                                                       For XML Path('')),1,1,'')  +' ) ) pvt
'
--Print(@SQL)
Exec(@SQL)

РЕДАКТИРОВАТЬ - Удалить NULLS

Declare @NoNulls varchar(max) = Stuff( (
Select Distinct 
       ',' + QuoteName(ReportingDate) +' = IsNull(' + QuoteName(ReportingDate) +',0)'
 From  Securitization.dbo.SecuritizationReporting  
 Order By 1 
 For XML Path('')),1,1,'')

Declare @SQL varchar(max) = '
Select [Securitization]
      ,' + @NoNulls + '
 From  (Select Distinct 
               Securitization
              ,ReportingDate
              ,RemittableCollections
         From  Securitization.dbo.SecuritizationReporting 
       ) src
 Pivot ( sum(RemittableCollections) for ReportingDate in ( ' + Stuff((Select Distinct 
                                                                             ',' + QuoteName(ReportingDate) 
                                                                       From  Securitization.dbo.SecuritizationReporting 
                                                                       Order By 1 
                                                                       For XML Path('')),1,1,'')  +' ) ) pvt
'
--Print(@SQL)
Exec(@SQL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...