我正在使用SQL 2012并尝试识别SourceDataID列在PartyCode列中有两个唯一条目的行,并且我遇到了困难。
SELECT PartyCode, SourceDataID, count (*) as CNT
FROM CustomerOrderLocation (nolock)
GROUP BY PartyCode, SourceDataID
HAVING (Count(PartyCode)>1)
ORDER BY PartyCode
结果如此返回:
W3333 948_O 31 (政党代码/ sourcedataid / CNT)
这是向我显示表中列出Partycode
和SourceDataID
的总条目。但是,我需要它来显示W333
不止一次列出948_O
SourceDataID
的任何实例的计数。
我没有运气构造查询来拉取我想要的结果。我怎么能这样做?
答案 0 :(得分:1)
与CTE
函数结合的PARTITION BY
有助于查找此方式的重复项。代码如下:
WITH CTE AS(
SELECT PartyCode, SourceDataID,
ROW_NUMBER()OVER(PARTITION BY SourceDataID ORDER BY SourceDataID) RN
FROM CustomerOrderLocation (NOLOCK))
SELECT * FROM CTE WHERE RN > 1
这应该返回附加到SourceDataID的每个重复的PartyCode。
如果要查看整个结果,请将上一个SELECT
语句更改为:
SELECT * FROM CTE ORDER BY PartyCode, RN
答案 1 :(得分:0)
感谢大家的帮助。我没有尽力描述问题,但这是我最终创建的查询以获取我的结果集。
;with cte1 (sourcedataid, partycode) as (select sourcedataid, partycode from customerorderparty (nolock) group by PartyCode, SourceDataID)
select count(sourcedataid), sourcedataid from cte1 group by sourcedataid having count(sourcedataid) >1