Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да завъртите няколко колони без агрегиране

Използвайте row_number() функция и направете условното агрегиране :

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;

Въпреки това, това ще върви с известен други стойности, от които ще се нуждаете, отидете с динамични решение за това.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да зададете име на първичен ключ в EF-Code-First

  2. Избройте всички бази данни от свързан сървър в SQL Server (T-SQL примери)

  3. Извличане на редове като колони в sqlserver 2008

  4. Не може да се вмъкне изрична стойност за колона за идентичност в таблица „таблица“, когато IDENTITY_INSERT е зададен на OFF

  5. Изберете стойности на колони като колони с помощта на PIVOT