sql >> Database teknologi >  >> RDS >> Sqlserver

Sådan pivoterer du flere kolonner uden aggregering

Brug row_number() funktion og gør det betingede aggregering :

select id, IdCust, Ref,
       max(case when Seq = 1 then stock end) as [Stock A], -- second table *id*
       max(case when Seq = 1 then code end) as [Code 1],
       max(case when Seq = 1 then price end) as [Price1],
       max(case when Seq = 2 then stock end) as [Stock B], -- second table *id*
       max(case when Seq = 2 then code end) as [Code 2],
       max(case when Seq = 2 then price end) as [Price2]
from (select f.*, s.Id Stock, s.Code, s.Price,
             row_number() over (partition by f.Ref order by s.id) as Seq
     from first f
     inner join second s on s.Ref = f.Ref 
     ) t
group by id, IdCust, Ref;

Men dette ville gå med kendt værdier, du ellers skulle bruge, gå med dynamisk løsning på det.



  1. Hvordan opretter man forbindelse til SQL Server-database fra JavaScript i browseren?

  2. Få datoer for en ugedag i et datointerval

  3. Fejl ved installation af pg gem, mkmf.rb kan ikke finde header-filer til ruby ​​(Mac OSX 10.6.5)

  4. Hvordan kan jeg rulle min sidste slettekommando tilbage i MySQL?