sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man pivoterar flera kolumner utan aggregering

Använd row_number() funktion och gör villkorligt 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 det här skulle gå med känd andra värden du skulle behöva gå med dynamisk lösning för det.



  1. postgres csv date null importfel

  2. mysqldump version Fel vid export av data från MySQL

  3. Hur kan jag uppdatera flera kolumner på flera rader i postgresql med psycopg2

  4. Hur man ansluter lokalt värd MySQL-databas med docker-behållaren