不确定我是否在标题中清楚地描述了上下文 但是情况有两个表
A|B
1|1
1|2
2|3
2|4
3|5
4|6
5|7
5|8
B|C
1|NULL
2|1
3|NULL
4|NULL
5|NULL
6|2
7|3
8|4
输出的条件是A的值应出现1次以上, 而对应的B值在C中并非都为NULL(来自B的至少C的值不是NULL)
与上表匹配的条件应为A的1和5 重复A的计数的预期输出为2
答案 0 :(得分:1)
以下内容应有帮助。
select t.a,count(t.a),count(t2.c)
from t
join t2
on t.b=t2.b
group by t.a
having count(t.a)>1
and count(t2.c)>=1
在这里我将表t和t2合并到列b 之后,我检查表t中有多少记录col-a大于1,以及t2中的col c有多少记录>。
仅供参考,count(null)为零),因此t2.c中的任何非null值都将具有count(t2.c)> = 1
完整演示
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=6d56b0ed8bafe09786342a6bfb58b8d2
答案 1 :(得分:0)
您可以尝试使用存在
select t1.A,count(*) as duplicate
from tableA t1
where exists ( select 1 from tableB t2 where t2.B=t1.B
and COALESCE(t2.B,t2.c) is not null
)
group by t1.A
having count(*)>1