【问题标题】:SQL Server 2012: Combine two rows into one rowSQL Server 2012:将两行合并为一行
【发布时间】:2017-09-24 18:40:08
【问题描述】:

我的桌子上有这个

ID     Routing      
01     WFM
01     ESCALATE
02     WFM
02     ESCALATE

我想将(SQL SELECT 查询)显示到下面的内容

ID     Routing1  Routing2      
01     WFM        ESCALATE
02     WFM        ESCALATE

【问题讨论】:

  • 听起来有点像PIVOT 的案例(但不完全是)。更大的示例表将有助于使所需转换背后的逻辑更加清晰。
  • 我认为您可以执行自联接,然后对其进行过滤以获得结果

标签: sql sql-server sql-server-2012 pivot


【解决方案1】:
 select id, max(routing) as routing1, 
            (select min(routing) from route r2 where r2.id = r1.id) as routing2
    from route r1
    group by id

只有当您有 2 条具有相同 ID 的记录时,这才能完美运行。

【讨论】:

    【解决方案2】:
    select a.id,a.routing as routing1,b.routing as routing2 
    from table1 as a join table1 as b 
    on
    a.id=b.id
    

    这可以是您的基本查询。

    实现你的结果。你可以使用类似的东西。

    select id,routing1,routing2 
    from (select a.id,a.routing as routing1,b.routing as routing2 
    from table1 as a join table1 as b 
    on
    a.id=b.id)
    where routing1 != routing2;
    

    我认为您可以将 a.routing !=b.routing 添加到基本查询中,而不处理第二个查询

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2022-12-18
      • 1970-01-01
      相关资源
      最近更新 更多