sql >> Database >  >> RDS >> Sqlserver

Gegevens twee keer draaien met dynamische sql en aangepaste kolomnamen

Twee keer draaien is niet nodig.

Voorbeeld

Declare @SQL varchar(max) = '
Select *
 From (
        Select A.Account
              ,B.*
         From  (Select Account
                      ,ProductID
                      ,Qty = sum(Qty)
                      ,RN=Row_Number() over (Partition By Account Order by ProductID)
                 From  YourTable
                 Group By Account,Productid
               ) A
         Cross Apply (values (''qty''+cast(RN as varchar(25)),cast(Qty as varchar(100)))
                            ,(''product''+cast(RN as varchar(25)),cast(productid as varchar(100)))
                     ) B (Item,Value)

      ) A
 Pivot (max([Value]) For [Item] in (' + Stuff((Select Distinct ','+QuoteName('product'+ColNr) 
                                                              +','+QuoteName('qty'+ColNr) 
                                               From (Select Distinct ColNr=cast(Row_Number() over (Partition By Account,ProductID Order by (Select NULL)) as varchar(25)) From  YourTable ) A  
                                               Order By 1 
                                               For XML Path('')),1,1,'')  + ') ) p'
Exec(@SQL);
Print @SQL

Retourneren

Als het helpt bij de visualisatie - de subquery produceert




  1. MySQL:eigendom van mysql-map verandert in 'mysql' van 'service_account' bij het opnieuw opstarten van de linux-server

  2. Mysql...Onmogelijke zoekopdracht?

  3. Cant pg_restore op Heroku:kon niet lezen van invoerbestand:einde van bestand

  4. querycache werkt niet