SQLServer:旋转字符串数据的示例

SQLServer:旋转字符串数据的示例

试图找到一些简单的SQLServer枢轴示例。我发现的大多数例子都涉及计数或汇总数字。我只想转轴一些字符串数据。例如,我有一个返回以下内容的查询。

Action1 VIEW  Action1 EDIT  
Action2 VIEW  Action3 VIEW  Action3 EDIT

我想使用枢轴(如果可能的话)来得出这样的结果:

Action1 VIEW EDIT  
Action2 VIEW NULL  Action3 VIEW EDIT

这与枢轴功能是可能的吗?


Smart猫小萌
浏览 601回答 3
3回答

30秒到达战场

请记住,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

12345678_0001

如果您特别希望使用SQLServer枢轴函数,那么假设您的两个原始列称为act和cmd,这应该可以工作。(不过,看上去没那么漂亮。)SELECT act AS 'Action', [View] as 'View', [Edit] as 'Edit'FROM (     SELECT act, cmd FROM data) AS srcPIVOT (     MAX(cmd) FOR cmd IN ([View], [Edit])) AS pvt

慕姐8265434

表设置:CREATE TABLE dbo.tbl (     action VARCHAR(20) NOT NULL,     view_edit VARCHAR(20) NOT NULL);INSERT INTO dbo.tbl (action, view_edit)VALUES ('Action1', 'VIEW'),        ('Action1', 'EDIT'),        ('Action2', 'VIEW'),        ('Action3', 'VIEW'),        ('Action3', 'EDIT');您的桌子:SELECT action, view_edit FROM dbo.tbl查询时不使用枢轴: SELECT Action, [View] = (Select view_edit FROM tbl WHERE t.action = action and view_edit = 'VIEW'),[Edit] = (Select view_edit FROM tbl  WHERE t.action = action and view_edit = 'EDIT')FROM tbl tGROUP BY Action使用枢轴查询: SELECT [Action], [View], [Edit] FROM(SELECT [Action], view_edit FROM tbl) AS t1  PIVOT (MAX(view_edit) FOR view_edit IN ([View], [Edit]) ) AS t2这两个查询结果都是: 
打开App,查看更多内容
随时随地看视频慕课网APP