在SqlServer 2008中,我有一个这样的表:
+--------+--------------------+--------------+
some_key | some_discriminator | some_column
-------- | ------------------ | -------------
K1 | D1 | V1
K1 | D2 | V2
K2 | D1 | V3
K2 | D2 | V4
我希望运行一个产生此问题的查询:
+--------+------+--------
some_key |D1 | D2
---------|---------------
K1 | V1 | V2
K2 | V3 | V4
答案 0 :(得分:2)
简单的数据透视查询可能符合您的需求:
SELECT some_key,
MAX(CASE WHEN some_discriminator = 'D1' THEN some_column ELSE NULL END) AS D1,
MAX(CASE WHEN some_discriminator = 'D2' THEN some_column ELSE NULL END) AS D2
FROM yourTable
GROUP BY some_key
分组有效,因为MAX
会忽略NULL
个值,而MAX
的{{1}}会返回该字符串。
但如果您想要在轮回结果中显示许多列或动态列,则可能不适用。