Транспонирование таблицы (строки в столбцы)

Какой запрос может транспонировать таблицу (строки станут столбцами)?

Причем, без использования функции pivot.


Ответы (2 шт):

Автор решения: Aziz Umarov

Почитайте про Pivot. Но и это не полное транспонирование в понимании матриц. Так как таблица в базе данных это не матрица.

На выборку типа

  SELECT DaysToManufacture, 
          AVG(StandardCost) AS AverageCost   
  FROM Production.Product  
  GROUP BY DaysToManufacture;  

DaysToManufacture AverageCost
----------------- -----------
0                 5.0885
1                 223.88
2                 359.1082
4                 949.4105

Применив pivot

  SELECT 'AverageCost' AS 
          Cost_Sorted_By_Production_Days,   
          [0], [1], [2], [3], [4]  
  FROM  
      (SELECT DaysToManufacture, 
              StandardCost   
       FROM Production.Product) AS SourceTable  
  PIVOT  
  (  
    AVG(StandardCost)  
    FOR DaysToManufacture IN ([0], [1], [2], [3], [4])  
  ) AS PivotTable;  

Мы получим

Cost_Sorted_By_Production_Days 0           1           2           3           4         
------------------------------ ----------- ----------- ----------- ----------- -----------
AverageCost                    5.0885      223.88      359.1082    NULL        949.4105
→ Ссылка
Автор решения: 0xdb

Обычный запрос, это просто.

Было:

select * from t1
/

NAME      VALUE
---- ----------
Вася        427
Петя        379
Маша        254
Паша        881
Коля        481

Стало:

select
    sum (case name when 'Вася' then value end) "Вася",
    sum (case name when 'Петя' then value end) "Петя",
    sum (case name when 'Маша' then value end) "Маша",
    sum (case name when 'Паша' then value end) "Паша",
    sum (case name when 'Коля' then value end) "Коля"
from t1
/

      Вася       Петя       Маша       Паша       Коля
---------- ---------- ---------- ---------- ----------
       427        379        254        881        481
→ Ссылка