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

SQL Server 2017视图层级数据自定义排序需求求助

SQL Server 2017层级数据排序解决方案

针对你遇到的层级数据排序问题,需要让1位key的顶层行优先显示,其下的2位key按txt字母顺序排列,每个2位key对应的3位key也按txt顺序紧跟其后,可以用以下ORDER BY逻辑实现:

SELECT *
FROM tbl
ORDER BY
    -- 按顶级key分组,确保同前缀的行集中显示
    LEFT([key], 1),
    -- 构造排序键,实现层级顺序和txt排序规则
    CASE LEN([key])
        WHEN 1 THEN '0|' + [key]  -- 1位key加前缀'0|',确保排在同组最前面
        WHEN 2 THEN '1|' + LEFT([key], 1) + '|' + txt  -- 2位key绑定顶级key,按txt排序
        ELSE '1|' + LEFT([key], 2) + '|' + txt  -- 3位key绑定对应2位父key,按txt排序
    END,
    -- 确保同排序键下,父节点(短长度)排在子节点前面
    LEN([key])

逻辑说明:

  1. 顶级分组:通过LEFT([key],1)将所有同前缀的行(如A开头的所有行)集中在一起,避免不同顶级的行交叉。
  2. 层级与排序绑定:
    • 1位key的排序键前缀为0|,确保在同组内所有行的最前面。
    • 2位key的排序键绑定到对应的顶级key,并拼接自身txt,实现同顶级下按txt排序。
    • 3位key的排序键绑定到对应的2位父key,并拼接自身txt,确保紧跟在父key行之后,且按txt排序。
  3. 层级优先级:最后通过LEN([key])确保如果出现排序键重复的情况,父节点(长度短)始终排在子节点前面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 09:11:53