问题简化一下,表中有两个字段,name1、name2,主键忽略,如果name1中的某个值对应name2的所有值,那么表示name1的这个值是共有的,反之这是独有的,查出来的表格希望共有的name1只出现一行,独有的分别列出,比如:
name1 name2
A 1
A 2
A 3
A 4
B 1
B 3
C 1
C 2
C 3
C 4
D 4
查出的数据样子如下
A 全部
C 全部
B 1
B 3
D 4谢谢指点
name1 name2
A 1
A 2
A 3
A 4
B 1
B 3
C 1
C 2
C 3
C 4
D 4
查出的数据样子如下
A 全部
C 全部
B 1
B 3
D 4谢谢指点
union
select * from a0 where name1 not in (select name1 from a0 group by name1 having(count(distinct name2)=4))
应该可以如果要一句语句只能这样了。
name2=case when (select count(*) from tb where name1=a.name1)=4
then '全部' else rtrim(name2) end
from tb a
from tb t