检索大量字段时,如何在sql server中获得适当的计数?

检索大量字段时,如何在sql server中获得适当的计数?,sql,sql-server,tsql,Sql,Sql Server,Tsql,这是我的设想 我有一个返回很多字段的查询。其中一个字段名为ID,我想按ID分组并按降序显示计数。然而,由于我带回了更多的字段,所以显示真正的计数变得更加困难,因为我必须按其他字段分组。下面是我正在尝试做的一个例子。如果我只有两个字段(ID、颜色)并按颜色分组,我可能会得到如下结果: ID颜色计数 ========= 第二季第10集 3蓝色5 4绿色24 假设我添加了另一个字段,实际上是同一个人,但是他们的名字拼写不同,这会导致计数失败,所以我可能会有这样的结果: ID颜色名称计数 =======

这是我的设想

我有一个返回很多字段的查询。其中一个字段名为ID,我想按ID分组并按降序显示计数。然而,由于我带回了更多的字段,所以显示真正的计数变得更加困难,因为我必须按其他字段分组。下面是我正在尝试做的一个例子。如果我只有两个字段(ID、颜色)并按颜色分组,我可能会得到如下结果:

ID颜色计数

=========

第二季第10集

3蓝色5

4绿色24

假设我添加了另一个字段,实际上是同一个人,但是他们的名字拼写不同,这会导致计数失败,所以我可能会有这样的结果:

ID颜色名称计数

================================

2RedJim5

2雷吉姆5

3红宝石3

3RedRobert2

4RedJohnny12

4RedJohn12


我希望能够带回ID、颜色、名称和计数,但显示计数,如第一个表中所示。有没有办法使用ID进行此操作?

尝试执行子查询以获取计数


--MarkusQ

如果您想要一个结果集,您必须省略名称,就像在第一篇文章中一样

SELECT Id, Color, COUNT(*)
FROM YourTable
GROUP By Id, Color
现在,您可以通过一个子查询获得所需的功能,尽管这并不优雅

SELECT Id, Color Name, (SELECT COUNT(*) 
                        FROM YourTable 
                        Where Id = O.Id 
                            AND Color = O.Color
                       ) AS "Count"
FROM YourTable O
GROUP BY Id, Color, Name
这应该可以满足您的需要

尝试以下方法:-

 SELECT DISTINCT a.ID, a.Color, a.Name, b.Count
 FROM yourTable
 INNER JOIN (
     SELECT ID, Color, Count(1) [Count] FROM yourTable
     GROUP BY ID, Color
 ) b ON a.ID = b.ID, a.Color = b.Color
 ORDER BY [Count] DESC

这对我来说没有意义,你想在ID 2的两行上都打“10”吗?这真的需要一个查询吗?是的,我很好奇,如果可以只按ID分组并显示计数10,而不必按所有选定列分组,则不聚合应用于外部选择中的最后一列?您可以这样做,但不是真的需要,因为它无论如何只会返回一条记录。