sql – 在另一列上分组的两列不同
发布时间:2020-12-12 16:35:01 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试在SQL Server的另一列上分组的两列上获得重复值的数量. 以下是我正在处理的示例场景. DECLARE @mytable TABLE (CampName varchar(10),ID VARCHAR(10),ListName varchar(10)) INSERT INTO @mytable ( CampName,ID,ListName ) VALUES ( 'A','X','Y' )
我正在尝试在SQL Server的另一列上分组的两列上获得重复值的数量.
以下是我正在处理的示例场景. DECLARE @mytable TABLE (CampName varchar(10),ID VARCHAR(10),ListName varchar(10)) INSERT INTO @mytable ( CampName,ID,ListName ) VALUES ( 'A','X','Y' ),( 'A','Y','Z' ),'P','Q' ),( 'B','R','S' ),'S' ) 这将导致下表. CampName ID ListName ------------------------------------- A X Y A X Y -- Duplicate Record A Y Z A Y Z -- Duplicate Record A Y Z -- Duplicate Record A P Q B X Y B X Y -- Duplicate Record B Y Z B Y Z -- Duplicate Record B Y Z -- Duplicate Record B P Q B R S B R S -- Duplicate Record 我需要输出如下: CampName dupcount ------------------- A 3 B 4 基本上,我需要找出每个CampName的重复次数(ID,ListName),而不管重复值是多少. 让我知道,如果我能澄清这方面的其他事情. 解决方法您可以使用以下查询:SELECT CampName,SUM(cnt) AS dupcount FROM ( SELECT CampName,COUNT(*) - 1 AS cnt FROM @mytable GROUP BY CampName,ListName HAVING COUNT(*) > 1) AS t GROUP BY CampName 内部查询使用HAVING子句来过滤非重复条目.它还计算每个ID,ListName的重复记录数.外部查询只是将重复次数加起来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |