如何从同一个表中的其他行向sql结果添加列

时间:2013-05-28 11:19:28

标签: sql oracle oracle10g

例如我有一张桌子:

num | value | info
1   | a     | test2
2   | a     | test1
1   | b     | specialinfo
3   | a     | test3

我有一个查询

select * 
from t 
where value='a'

结果

1 a test2
2 a test1
3 a test3

但我想将info添加为值b,而不是新行,而是作为附加列,因此它将如下所示:

1 a test2 specialinfo
2 a test1 null
3 a test3 null

因此值specialinfo作为附加列而不是附加行。

对于这种情况,select * from t where value IN ('a','b')无效

可以这样做吗?

1 个答案:

答案 0 :(得分:1)

为了在单独的列中获取详细信息,一种方法是多次连接表以获得结果:

select t1.num, t1.value, t1.info, t2.info as t2_info
from yt t1
left join yt t2
  on t1.num = t2.num
  and t1.value <> t2.value
where t1.value = 'a';

请参阅SQL Fiddle with Demo