将column1转换为标题,将column2转换为行

时间:2017-02-26 06:39:37

标签: sql sql-server pivot

我非常擅长在SQL中使用pivot,并希望尝试透视它。 任何帮助,将不胜感激。 (罗斯文数据库)

我正在尝试将姓氏转移到TotalOrders之上。 姓氏在column1中,总订单在column2中

lastname  TotalOrders
---------------------
Buchanan     42

Callahan    104

Davolio     123

Dodsworth    43

Fuller       96

King         72

Leverling   127

Peacock     156

Suyama       67

/ *尝试做:* /

[lastname]   [Buchanan]  [Callahan]...

TotalOrders     42           104   ...

/ 这是我到目前为止所拥有的。 / [代码]

SELECT lastname, COUNT(*) TotalOrders
    FROM employees join orders
    ON employees.employeeid = orders.employeeid
    GROUP BY lastname

PIVOT 
(
  COUNT(TotalOrders)
  FOR lastname IN ([Buchanan], [Callahan], [Davolio], [Dodsworth]
                  ,[Fuller], [King], [Leverling], [Peacock], [Suyama])

) AS P;

[/代码]

1 个答案:

答案 0 :(得分:0)

你很亲密。将连接查询放在子查询中,并在数据透视中使用MAX(或MIN)。

select * 
from (
    SELECT lastname, COUNT(*) TotalOrders
    FROM employees join orders
    ON employees.employeeid = orders.employeeid
    GROUP BY lastname
) t
PIVOT 
(
  MAX(TotalOrders)
  FOR lastname IN ([Buchanan], [Callahan], [Davolio], [Dodsworth]
                  ,[Fuller], [King], [Leverling], [Peacock], [Suyama])

) AS P;