在T-SQL中分组时保持顺序
我在MSSQL中有下表和数据(例如简化) (数据行1,2,3再次在4,5,6重复。7和8再次是唯一的。 我想使用count和group by检索以下内容:在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
------------ (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