个人觉得有点复杂的表连接后分组,请教
表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