Sql server MSSql仅对计数大于3的记录进行分组,并返回其余记录

Sql server MSSql仅对计数大于3的记录进行分组,并返回其余记录,sql-server,group-by,conditional,Sql Server,Group By,Conditional,我想对count大于3的键进行分组,查询还将返回其余的记录。我不想全部使用Union,还有其他方法吗 身份证 1. 1. 1. 2. 3. 3. 4. 4. 4. 四, 返回 1. 1. 1. 2. 3. 3. 4您可以使用: 我会这样做 SELECT GroupedData.ID FROM (SELECT ID, CNT = COUNT(*) FROM dbo.TableName GROUP BY ID) GroupedData AS g LEFT JOIN dbo

我想对count大于3的键进行分组,查询还将返回其余的记录。我不想全部使用Union,还有其他方法吗

身份证 1. 1. 1. 2. 3. 3. 4. 4. 4. 四,

返回 1. 1. 1. 2. 3. 3. 4

您可以使用:

我会这样做

SELECT 
GroupedData.ID
FROM 
    (SELECT ID, CNT = COUNT(*)
    FROM dbo.TableName
    GROUP BY ID) GroupedData AS g
LEFT JOIN dbo.TableName AS  t
ON t.id = g.id and g.CNT<=3
这还允许您添加更多列,这些列根据需要报告组或单个记录的详细信息

SELECT 
g.ID, 
ISNULL(t.RecordName,'Grouped Records') as RecordName,
ISNULL(t.NumericField,g.NumericField)  as NumericField
FROM 
    (
     SELECT ID, CNT = COUNT(*), SUM(NumericField) as NumericField
     FROM dbo.TableName
     GROUP BY ID
    ) GroupedData AS g
LEFT JOIN dbo.TableName AS  t
ON t.id = g.id and g.CNT<=3
SELECT 
g.ID, 
ISNULL(t.RecordName,'Grouped Records') as RecordName,
ISNULL(t.NumericField,g.NumericField)  as NumericField
FROM 
    (
     SELECT ID, CNT = COUNT(*), SUM(NumericField) as NumericField
     FROM dbo.TableName
     GROUP BY ID
    ) GroupedData AS g
LEFT JOIN dbo.TableName AS  t
ON t.id = g.id and g.CNT<=3