SQL запрос _count - PullRequest
       2

SQL запрос _count

0 голосов
/ 27 августа 2018

Я пытаюсь получить SQL-запрос для приведенных ниже данных, где мне нужно получить все данные из таблицы клиентов, где для customer_id назначено более 1 бизнес-единицы.

CustomerId  AccoutNo  UniqueCode  Owner p  AdminFlag  EmpId  Dept
----------  --------  ----------  -------  ---------  -----  ----
1                234         009      N        N         67   ABC
1                234         009      N        Y        232   ABC
1                234         009      Y        N         65   ABC
2                123         100      N        Y         73   PQR
2                123         100      N        N       7335   PQR
3                456         123      Y        N        633   ABC
3                789         123      Y        N       6363   ABC
1                456         009      N        Y       5674   PQR

1 Ответ

0 голосов
/ 27 августа 2018

Это идеальное применение аналитических функций, в данном случае аналитической функции count(distinct ...). Во внутреннем запросе вы вычисляете, сколько разных отделов присутствует для каждого клиента; Запустите подзапрос, чтобы увидеть, что он производит. Затем внешний запрос просто выбирает строки, в которых число больше 1.

select customer_id, account_no -- , ... - whatever other columns you must select
from   (
         select *, count(distinct dept) over (partition by customer_id) as ct
         from   customers
       )
where  ct > 1
;  

Примечание - если DEPT может быть NULL, эти строки не учитываются в count(distinct ...) в любом случае. Если может присутствовать NULL и требуется другая обработка, вам необходимо указать требование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...