SQL Server:PIVOTing字符串数据的示例
时间:2020-03-05 18:42:26 来源:igfitidea点击:
试图找到一些简单的SQL Server PIVOT示例。我发现的大多数示例都涉及对数字进行计数或者求和。我只想透视一些字符串数据。例如,我有一个查询,返回以下内容。
Action1 VIEW Action1 EDIT Action2 VIEW Action3 VIEW Action3 EDIT
我想使用PIVOT(如果可能的话)使结果如下所示:
Action1 VIEW EDIT Action2 VIEW NULL Action3 VIEW EDIT
使用PIVOT功能甚至有可能吗?
解决方案
回答
好吧,对于示例以及任何数量有限的唯一列,都应该这样做。
select distinct a, (select distinct t2.b from t t2 where t1.a=t2.a and t2.b='VIEW'), (select distinct t2.b from t t2 where t1.a=t2.a and t2.b='EDIT') from t t1
回答
请记住,MAX聚合函数将同时适用于文本和数字。此查询将只需要扫描表一次。
SELECT Action, MAX( CASE data WHEN 'View' THEN data ELSE '' END ) ViewCol, MAX( CASE data WHEN 'Edit' THEN data ELSE '' END ) EditCol FROM t GROUP BY Action
回答
如果我们特别想使用SQL Server PIVOT函数,那么这应该起作用,假定两个原始列分别称为act和cmd。 (虽然看起来不太漂亮。)
SELECT act AS 'Action', [View] as 'View', [Edit] as 'Edit' FROM ( SELECT act, cmd FROM data ) AS src PIVOT ( MAX(cmd) FOR cmd IN ([View], [Edit]) ) AS pvt