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

前端之家收集整理的这篇文章主要介绍了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的重复记录数.外部查询只是将重复次数加起来.

猜你在找的MsSQL相关文章