Динамический свод на двух столбцах в SQL server
Привет,
Я хотел сделать сводку по двум столбцам в таблице sql server, которая должна будет генерировать динамические столбцы. Я попробовал сделать это следующим образом
Что я уже пробовал:
CREATE TABLE [dbo].[Test]( [Writer] [nvarchar](300) NULL, [PackageID] [nvarchar](300) NULL, [PubType] [nvarchar](300) NULL, [RFT] [int] NULL, ) INSERT INTO Test VALUES ('Ajeeth Kumar','723','ABC',1), ('Ajeeth Kumar','724','ABC',1), ('Ajeeth Kumar','725','ABC',1), ('Ajeeth Kumar','726','DEF',1), ('Ajeeth Kumar','727','DEF',0), ('Ajeeth Kumar','728','DEF',0) SELECT * FROM Test DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(PubType) FROM Test FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') PRINT @cols SET @query = 'SELECT Writer, ' + @cols + ' from ( SELECT Writer ,PackageID ,PubType FROM Test )x PIVOT ( COUNT(PackageID) for PubType in (' + @cols + ') )p WHERE Writer IS NOT NULL' EXECUTE (@query)
Это дает мне выход, так как я поворачивался только с колонкой PubType
Writer ABC DEF Ajeeth Kumar 3 3
Но мне нужно, чтобы вывод также был развернут с помощью столбца PubType и RFT, чтобы мой вывод выглядел так
Writer ABC DEF 0 1 Ajeeth Kumar 3 3 2 4
Любая помощь в этом вопросе будет оценена по достоинству. Спасибо!!
FranzBe
Просто комментарий: Я проголосовал за ваш вопрос, потому что вы предоставили настройку (таблицу и данные), чтобы быстро поиграть с заданной темой. То, что я часто пропускаю в других вопросах, которые я читаю.