为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Smart猫小萌 2019-06-05 12:41:43
SQLServer:旋转字符串数据的示例试图找到一些简单的SQLServer枢轴示例。我发现的大多数例子都涉及计数或汇总数字。我只想转轴一些字符串数据。例如,我有一个返回以下内容的查询。Action1 VIEW  Action1 EDIT   Action2 VIEW  Action3 VIEW  Action3 EDIT我想使用枢轴(如果可能的话)来得出这样的结果:Action1 VIEW EDIT   Action2 VIEW NULL  Action3 VIEW EDIT这与枢轴功能是可能的吗?
查看完整描述

3 回答

?
30秒到达战场

TA贡献1828条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-06-05
?
12345678_0001

TA贡献1802条经验 获得超5个赞

如果您特别希望使用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


查看完整回答
反对 回复 2019-06-05
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

表设置:

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

https://img1.sycdn.imooc.com//5cf748420001b5bd01750077.jpg

查询时不使用枢轴: 

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

这两个查询结果都是: 

https://img1.sycdn.imooc.com//5cf748450001a83e01470117.jpg

查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 563 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信