Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara memutar beberapa kolom tanpa agregasi

Gunakan row_number() fungsi dan lakukan kondisional agregasi :

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;

Namun, ini akan pergi dengan dikenal nilai lain yang Anda perlukan dengan dinamis solusi untuk itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Replikasi Basis Data SQL Server

  2. Bergabung dengan Eliminasi:Ketika SQL Server Menghapus Tabel yang Tidak Perlu

  3. Mengaudit perubahan data SQL Server

  4. Pulihkan cadangan SQL Server 2000 di SQL Server 2012

  5. Instal SQL Server 2016