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

T-SQL排序难题求助:基于difStartSecs与difExpireSecs定制排序

T-SQL定制排序方案

根据你的需求,我们可以通过多层条件的ORDER BY实现预期排序,核心逻辑拆解如下:

  • 分组区分:将difStartSecs > 0的记录统一排在末尾,其余(负数/零)记录前置
  • 负数/零组内排序:按difExpireSecs升序排列(剩余运行时长越短,排序越靠前),这既满足你“优先考虑剩余时长”的要求,也解释了启动最久的记录1因剩余时长最长而排在负数组最后
  • 正数组内排序:按difStartSecs升序排列,匹配你给出的8、9的顺序

完整T-SQL代码

SELECT Record, difStartSecs, difExpireSecs
FROM YourTable
ORDER BY
    -- 第一优先级:正数记录后置
    CASE WHEN difStartSecs > 0 THEN 1 ELSE 0 END,
    -- 第二优先级:负数/零组按剩余时长升序
    CASE WHEN difStartSecs <= 0 THEN difExpireSecs ELSE NULL END,
    -- 第三优先级:正数组按启动时间升序
    difStartSecs;

验证结果

执行后将得到你期望的排序顺序:2,7,3,4,5,6,1,8,9,完全匹配需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 18:42:55