读书人

个人觉得有点复杂的表连接后分组请问

发布时间: 2012-01-26 19:40:46 作者: rapoo

个人觉得有点复杂的表连接后分组,请教
表A:
a b
--------
101 23
101 24
101 25
102 26
102 27
103 28
103 29
103 30

表B
a b
-----
23 A
24 B
26 C
27 D

如果表A中列b的值出现在表B中,则列出A.a,否则显示空值,并且,表A的a列不重复显示.
我的语句是:
select A.a,B.a from A left join B on A.b=B.a
只做到了如下结果:

a b
---------
101 23
101 24
101 NULL
102 26
102 27
103 NULL
103 NULL
103 NULL


我要的结果是:
a b
---------
101 23
102 26
103 NULL



[解决办法]
--try


select A.a,b=case when exists(select 1 from B where a=A.b) then b end
from
(
select a,b=min(b)
from A
group by a
)A

读书人网 >SQL Server

热点推荐