2017-04-27 24 views
1

我有这个在我的表的SQL Server 2012:合并两行成一排

ID  Routing  
01  WFM 
01  ESCALATE 
02  WFM 
02  ESCALATE 

而且我想显示(SQL SELECT查询),以类似下面

ID  Routing1 Routing2  
01  WFM  ESCALATE 
02  WFM  ESCALATE 
+1

听起来像一个'PIVOT'(但不完全)的情况。一个更大的示例表格可以帮助更清晰地理解所需变换的逻辑。 – stakx

+0

我认为你可以执行一个自我加入,然后过滤它以得到结果 –

回答

0
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的基本查询,而不是与第二个查询

0
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条记录与此相同。