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

时间:2016-02-09 18:55:53

标签: sql sql-server tsql group-by sql-order-by

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

---------
|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来检索以下内容:

------------ (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 |

我这与查询或表结构有关吗?

2 个答案:

答案 0 :(得分:0)

您可以按最低身份订购:

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

答案 1 :(得分:0)

你几乎就在那里,你需要ORDER BY Count DESC,[Data] DESC这样:

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

结果:

enter image description here