我有两个查询结果如下:
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?
你可以使用count()
和DISTINCT
:
SELECT count(DISTINCT source_system_id) number_of_sources
FROM master
WHERE parent_part_key_id = 7369179;
你可以使用count(*)获得相关来源的数量。
select parent_part_key_id,count(*) from master group by parent_part_key_id
如果想获取只有一个source_system_id的parent_part_key_id,那么它可以包含在'having'条件中
select parent_part_key_id,count(*) from master group by parent_part_key_id having count(source_system_id)=1
不是强制使用rowcount ...我猜...
使用下面的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然后在临时表中插入结果然后使用它们。