我在 MS-SQL 数据库中得到以下数据
Manufacturer|Model|Location|Inventory|Sold
------------|-----|--------|---------|-----
Alpha |One |USA |3000 |123
Alpha |One |UK |2300 |53
Beta |Two |USA |1300 |45
Beta |Two |UK |620 |12
Gamma |Three|USA |520 |155
Gamma |Three|UK |250 |19
我想获得
Manufacturer|Model|Inventory UK|Sold UK|Inventory USA|Sold USA
------------|-----|------------|-------|-------------|--------
Alpha |One |2300 |53 |3000 |123
Beta |Two |620 |12 |1300 |45
Gamma |Three|250 |19 |520 |155
如果我理解正确,我应该旋转两次,但目前我被困在如何获得这个
SELECT *
FROM Data
PIVOT (max([Inventory]) FOR Location IN ([UK],[USA])) Piv1
PIVOT (max([Sold]) FOR Location IN ([UK],[USA])) Piv2
group by Manufacturer,Model,..?
但当然,我仍然不明白我应该如何进行。
有人可以帮帮我吗?
非常感谢
最佳答案
这是直接使用 SQL Server 的 PIVOT
执行此操作的一种方法运算符(operator):
SELECT
Manufacturer,
Model,
MAX(UK) AS [Inventory UK],
MAX(UK1) AS [Sold UK],
MAX(USA) AS [Inventory USA],
MAX(USA1) AS [Sold USA]
FROM
(
SELECT Manufacturer, Model, Location, Location + '1' AS Location1, Inventory, Sold
FROM Data
) AS P
PIVOT (MAX([Inventory]) FOR Location IN ([UK],[USA])) Piv1
PIVOT (MAX([Sold]) FOR Location1 IN ([UK1],[USA1])) Piv2
GROUP BY Manufacturer, Model
ORDER BY Manufacturer;
Demo
关于sql-server - MS-SQL 透视两列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52552307/