Чтобы показать совокупность дублированных значений, что другой соответствующий атрибут в другой таблице НЕ равен NULL - PullRequest
0 голосов
/ 17 ноября 2018

Не уверен, что я четко описал контекст в заголовке но ситуация дается две таблицы

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

условие вывода значения А должно появляться более 1 раза, в то время как соответствующие значения B не равны NULL в C (по крайней мере 1 значение C из B не равно NULL)

то, что соответствует условиям приведенной выше таблицы по A, должно быть 1 и 5 ожидаемый результат подсчета дублированного A составляет 2

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Следующее должно помочь.

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 в столбце t равно> 1, а также в столбце t2> 1.

Просто к сведению, count (null) будет равно нулю), поэтому любое ненулевое значение в t2.c будет иметь count (t2.c)> = 1

Полная демонстрация

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=6d56b0ed8bafe09786342a6bfb58b8d2

0 голосов
/ 17 ноября 2018

вы можете попробовать используя существующий

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...