You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在T-SQL中基于ItemNumber列将同编号记录相邻排列

解决SQL排序问题:让相同ItemNumber的行相邻

嘿,我来帮你搞定这个排序问题!你之前的困惑其实是把GROUP BY和ORDER BY的用途搞混啦——GROUP BY是用来聚合数据的(比如把相同ItemNumber的行合并,计算总数、求和之类的),但你要的只是调整结果的顺序,让相同ItemNumber的行挨在一起,完全不需要用到GROUP BY哦。

解决方案:调整ORDER BY的排序优先级

你只需要修改ORDER BY子句,把ItemNumber作为第一个排序条件,这样数据库会先把所有相同ItemNumber的行归为一组,然后再按你需要的规则排序组内的行。

比如,如果你想在相同ItemNumber内,保持和原查询类似的排序逻辑(先按ChangeDate,再按Type,最后按TableID),可以用这个查询:

select MT.* 
from MyTable MT 
where 0 = 0 
order by ItemNumber, ChangeDate, Type, TableID;

如果你更在意组内按TableID的顺序排列(就像你期望的结果那样),也可以简化成:

select MT.* 
from MyTable MT 
where 0 = 0 
order by ItemNumber, TableID;

验证结果

执行上面的查询后,会得到完全符合你期望的结果:

TableIDChangeDateDescriptionItemNumberType
112592019-05-20Item11335MOVE
112602019-05-20Item21475MOVE
112612019-05-20Item31782UPDATE
112632019-05-20Item51782MOVE
112622019-05-20Item41789UPDATE

核心逻辑就是:把ItemNumber设为最高优先级的排序键,让相同编号的行先聚在一起,再用后续条件控制组内的顺序。

内容的提问来源于stack exchange,提问作者IrishChieftain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:37:55