Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL按计数分组_Sql_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

SQL按计数分组

SQL按计数分组,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,这是我的剧本 SELECT COUNT( [Id]) as [Count Of Register], Tag as [Tag] FROM [Members] Group By Tag Order By [Count Of Register] Desc; 返回的表如下所示: Count Tag 550 ----1 550 ----2 545 ----3 545 ----4 545 ----5 所以,这次我需要标记的计数,按这个新的计数字段分组 一些返回值如下: 2 ---550 3 -

这是我的剧本

SELECT COUNT( [Id]) as [Count Of Register],
Tag as [Tag]
FROM [Members]
Group By Tag 
Order By [Count Of Register] Desc;
返回的表如下所示:

Count   Tag

550 ----1
550 ----2
545 ----3
545 ----4
545 ----5
所以,这次我需要标记的计数,按这个新的计数字段分组

一些返回值如下:

2 ---550
3 ---545
有没有办法不使用新表、模板表或任何存储表而只通过查询?

您可以使用

SELECT [Count Of Register], COUNT(1) [Grouped Count]
FROM
(
    SELECT COUNT( [Id]) as [Count Of Register],
           Tag as [Tag]
    FROM [Members]
    Group By Tag 

) MyTable
GROUP BY [Count Of Register]
SELECT [Count Of Register], COUNT(*) FROM
    (SELECT COUNT([Id]) as [Count Of Register], Tag as [Tag]
     FROM [Members] GROUP BY Tag) q
GROUP BY [Count Of Register]
mysql>创建表order1(计数器int(3)非空自动增量主键, ->标签int(3)); 查询正常,0行受影响(0.01秒)

mysql>插入order1值(500,20)//根据需要插入任意值并检查 在order1中插入值(500,20); 在order1中插入值(600,20);
mysql>从order1按计数器分组中选择计数器、计数(*)

您想要的结果是什么
(550,2)、(545,3)
?@MartinSmith是的,我编辑问题有一个错误:Msg 1033,级别15,状态1,第19行ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML。哦,是的,很抱歉,您不能在内部查询中使用ORDER BY!已修复示例。出现错误:列名“Tag”无效。用于计数(标记)