这是我的场景,
我有一个返回很多字段的查询。其中一个字段称为ID,我希望按ID分组,并按降序显示计数。然而,由于我带回了更多的字段,因此很难显示真实的计数,因为我必须按其他字段分组。下面是我正在尝试做的一个例子。如果我只有两个字段(ID,颜色),并且我按颜色分组,我可能会得到这样的结果:
ID颜色计数
== ==========
2%;红色;2%;10%
3%;蓝色;2%;5%。
4%;绿色;24%;
假设我添加了另一个字段,该字段实际上是同一个人,但是他们的名字拼写不同,这会导致计数错误,所以我可能会有这样的结果:
ID颜色名称计数
== ================
2岁的红帽乐队的吉姆·贝克汉姆和5岁的孩子们。
*5*
3个月的时候,红色世界的人,鲍勃的人,3个月的人。
3个月前,红宝石公司的罗伯特·贝克汉姆;第二个月。
4月4日,美国红宝石公司;约翰尼;美国;12月12日
4月4日,美国红宝石公司首席执行官约翰·斯图尔特;12号。
我希望能够带回ID、Color、Name和Count,但可以像第一个表一样显示计数。有没有办法使用ID来做到这一点呢?
发布于 2009-03-03 21:52:46
如果需要单个结果集,则必须省略名称,就像在第一篇文章中那样
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这应该可以如您所愿地工作
发布于 2009-03-03 22:00:14
试试这个:-
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发布于 2009-03-03 21:50:39
尝试执行子查询以获取计数。
-- MarkusQ
https://stackoverflow.com/questions/608355
复制相似问题