将 column1 转换为标题和 column2 作为行

Pivot column1 into the headings and column2 as rows

我对在 SQL 中使用 pivot 还很陌生,想尝试一下 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;

[/代码]

你很接近。将连接查询放在子查询中,并在数据透视表中使用 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;