0

例如我有一张桌子:

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')将不起作用

可以这样做吗?

4

1 回答 1

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

于 2013-05-28T11:24:41.373 回答