Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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
在T-SQL中分组时保持顺序_Sql_Sql Server_Tsql_Group By_Sql Order By - Fatal编程技术网

在T-SQL中分组时保持顺序

在T-SQL中分组时保持顺序,sql,sql-server,tsql,group-by,sql-order-by,Sql,Sql Server,Tsql,Group By,Sql Order By,我在MSSQL中有下表和数据(例如简化) (数据行1,2,3再次在4,5,6重复。7和8再次是唯一的。 我想使用count和group by检索以下内容: ------------ (desired result) |Count|Data| ------------ |2 |XOO | |2 |OXO | |2 |OOX | |1 |XXX | |1 |OOO | 顺序(id)非常重要。当我运行下面的查询时,我可以得到计数值,但顺序似乎混乱了 SELECT CO

我在MSSQL中有下表和数据(例如简化)

(数据行1,2,3再次在4,5,6重复。7和8再次是唯一的。 我想使用count和group by检索以下内容:

------------ (desired result)
|Count|Data|
------------
|2    |XOO |
|2    |OXO |
|2    |OOX |
|1    |XXX |
|1    |OOO |
顺序(id)非常重要。当我运行下面的查询时,我可以得到计数值,但顺序似乎混乱了

SELECT  COUNT ([Data]) AS Count, [Data]
FROM [MyTable]  GROUP BY [Data] 

------------ (incorrect result with wrong order)
|Count|Data|
------------
|2    |XOO |
|1    |OOO |
|2    |OOX |
|1    |OXO |
|1    |XXX |

I这与查询或表结构有关?

您可以按最小id排序:

SELECT COUNT([Data]) AS Count, [Data]
FROM [MyTable]
GROUP BY [Data] 
ORDER BY MIN(ID);

您就快到了,只需按计数说明,
ORDER BY Count DESC,[Data]DESC
如下所示:

SELECT  COUNT ([Data]) AS Count, [Data]
FROM [MyTable]  
GROUP BY [Data] 
ORDER BY Count DESC,[Data] DESC
结果是:


使用itIndeed将min(id)添加到您的选择和排序中。看起来很简单。谢谢!我可以选择这个作为答案吗?@JamesZ您可以通过表达式排序,而不必将其包含在
选择中。
SELECT  COUNT ([Data]) AS Count, [Data]
FROM [MyTable]  
GROUP BY [Data] 
ORDER BY Count DESC,[Data] DESC