Как использовать ROW-COUNT, чтобы проверить, является ли одна часть более чем одной исходной системой или нет? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть два запроса с результатом:

select SOURCE_SYSTEM_ID, PARENT_PART_KEY_ID
from Master
where PARENT_PART_KEY_ID = 7619088

SOURCE_SYSTEM_ID    PARENT_PART_KEY_ID
90                  7619088
90                  7619088
90                  7619088
90                  7619088
90                  7619088
90                  7619088
90                  7619088
90                  7619088
1                   7619088
1                   7619088
90                  7619088
90                  7619088
90                  7619088

select SOURCE_SYSTEM_ID, PARENT_PART_KEY_ID
from Master
 where PARENT_PART_KEY_ID = 7369179

SOURCE_SYSTEM_ID    PARENT_PART_KEY_ID
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179
1                   7369179

Теперь я хочу знать, что если PARENT_PART_KEY_ID прибывает из более чем одного SOURCE_SYSTEM или нет?поэтому, исходя из этого, я должен поставить условие.

так, как использовать счетчик строк, чтобы проверить, есть ли PARENT_PART_KEY_ID, относящийся к одному SOURCE_SYSTEM_ID или к нескольким SOURCE_SYSTEM_ID?

Ответы [ 3 ]

0 голосов
/ 22 апреля 2019

Вы можете использовать count() с DISTINCT:

SELECT count(DISTINCT source_system_id) number_of_sources
       FROM master
       WHERE parent_part_key_id = 7369179;
0 голосов
/ 22 апреля 2019

Используйте row_count ниже допустимого, но вы можете использовать лучший способ для вас ... Я думаю, этот пример кода можно использовать:

With t
As (
SELECT 
ROW_NUMBER() OVER(PARTITION BY PARENT_PART_KEY_ID ORDER BY SOURCE_SYSTEM_ID ASC) 
AS Rownum, PARENT_PART_KEY_ID, SOURCE_SYSTEM_ID
FROM [master] --master is table name
Group by PARENT_PART_KEY_ID, SOURCE_SYSTEM_ID)

Select * from t --where rownum =1 --you can use 'where' for find first or end of row in you data

Если вы не хотите использовать CTE, вы можете использовать select, а затем вставить результаты в временную таблицу, а затем использовать их.

0 голосов
/ 22 апреля 2019

Вы можете получить количество соответствующих источников, используя count (*).

select parent_part_key_id,count(*) from master group by parent_part_key_id

если требуется получить parent_part_key_id, имеющий только один source_system_id, то его можно включить в условие «Имея»

select parent_part_key_id,count(*) from master group by parent_part_key_id having count(source_system_id)=1

не обязательно использовать количество строк ... я думаю ...

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