Sql server MSSql仅对计数大于3的记录进行分组,并返回其余记录
我想对count大于3的键进行分组,查询还将返回其余的记录。我不想全部使用Union,还有其他方法吗 身份证 1. 1. 1. 2. 3. 3. 4. 4. 4. 四, 返回 1. 1. 1. 2. 3. 3. 4您可以使用: 我会这样做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
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