Mik*_*ike 2 sql sql-server-2008
我正在使用sql 2008我的数据集看起来像
Entity Type1 Type2 Balance
1 A R 100
1 B Z 200
1 C R 300
2 A X 1000
2 B Y 2000
Run Code Online (Sandbox Code Playgroud)
我的输出应该是这样的
Entity A-Type2 A-Balance B-Type2 B-Balance C-Type2 C-Balance
1 R 100 Z 200 R 300
2 X 1000 Y 2000 0
Run Code Online (Sandbox Code Playgroud)
现在我开始编写一个数据透视查询,我想我可以使用MAX,因为每个Entity/Type1组合应该有一条记录.但无法弄清楚如何在一个支点中做两个字段.这可能吗?CTE可以帮助解决这个问题吗?
最简单的是MAX的想法,但有一个CASE语句,例如:
SELECT
Entity,
MAX(CASE WHEN Type1 = 'A' THEN Type2 ELSE NULL END) AS AType2,
MAX(CASE WHEN Type1 = 'A' THEN Balance ELSE NULL END) AS ABalance,
MAX(CASE WHEN Type1 = 'B' THEN Type2 ELSE NULL END) AS BType2,
MAX(CASE WHEN Type1 = 'B' THEN Balance ELSE NULL END) AS BBalance,
MAX(CASE WHEN Type1 = 'C' THEN Type2 ELSE NULL END) AS CType2,
MAX(CASE WHEN Type1 = 'C' THEN Balance ELSE NULL END) AS CBalance
FROM
...
GROUP BY
Entity
Run Code Online (Sandbox Code Playgroud)
换句话说,仅在Type1是特定值时使用该值(其他Type1值为null).