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

Keep the order while grouping in T-SQL

我在 MSSQL 中有以下 table 数据(例如简化)。

---------
|id|Data|
---------
|1 |XOO |
|2 |OXO |
|3 |OOX |
|4 |XOO |
|5 |OXO |
|6 |OOX |
|7 |XXX |
|8 |OOO |

(数据行 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 |

这与查询或 table 结构有关吗?

您可以通过最小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

结果: