【问题标题】:Shrink and Group Column using Pivot in SQL Server在 SQL Server 中使用 Pivot 收缩和分组列
【发布时间】:2016-07-21 11:13:20
【问题描述】:

我有一个 SQL 表:

DECLARE @team TABLE (Department VARCHAR(20),TeamMember1 VARCHAR(50),TeamMember2 VARCHAR(50),TeamMember3 VARCHAR(50))

INSERT INTO @team VALUES('CRM','Tom', 'Harry', 'Rodger')
INSERT INTO @team VALUES('ERP','Boby', 'Simha', 'Wonder')
INSERT INTO @team VALUES('HR','Jack', 'John', 'Jim')

SELECT t.* FROM @team t

表格的输出应该是

我的预期输出应该是

我参考了很多教程,但我无法找到解决方案。所以,请帮助我...这是一个临时表,我需要在我的主项目中实现相同的逻辑。

【问题讨论】:

    标签: sql sql-server group-by pivot pivot-table


    【解决方案1】:
    SELECT t.*
    FROM @team
    CROSS APPLY (
        VALUES ('TeamMember1', TeamMember1)
             , ('TeamMember2', TeamMember2)
             , ('TeamMember3', TeamMember3)
    ) t(TeamName, TeamMember)
    

    【讨论】:

      【解决方案2】:

      首先,您应该知道将团队成员存储在不同的列中是一种不好的数据格式。您想要的结果是更好的格式。

      如果你正在学习 SQL,一个简单的解决方案是UNION ALL

      select Department, TeamMember1 as TeamMember from @team union all
      select Department, TeamMember2 as TeamMember from @team union all
      select Department, TeamMember3 as TeamMember from @team;
      

      但是,在某些情况下,其他方法更有效。我会倾向于使用:

      select t.Department, v.TeamMember
      from @team t outer apply
           (values (TeamMember1), (TeamMember2), (TeamMember3)) v(TeamMember);
      

      【讨论】:

      • 您在哪里定义了 t.TeamName
      • @B.Balamanigandan 。 . .列名似乎是department
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2021-03-19
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多