0

I have written a query to generate a Pivot. The code is running absolutely fine. Instead of hard coding the value("1","2","3"), IS it possible to write a subquery?

SELECT *
FROM (
    SELECT * from #Registered2
) as s
PIVOT
(
    SUM(s.Registered_customer_Count)
    FOR [Offer_cover_id] IN ("1","2","3")
)AS pvt
progm
  • 2,782
  • 3
  • 14
  • 32
Alankar Gupta
  • 201
  • 3
  • 12

1 Answers1

0
DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.[Offer_cover_id]) 
            FROM #Registered2 c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')


set @query = 'SELECT  ' + @cols + ' from 
            (
                select*
                from Registered2 
           ) x
            pivot 
            (
                 SUM(Registered_customer_Count)
                for [Offer_cover_id] in (' + @cols + ')
            ) p '


execute(@query)
Chanukya
  • 5,833
  • 1
  • 22
  • 36