微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 在另一列上分组的两列不同

我正在尝试在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的重复记录数.外部查询只是将重复次数加起来.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐