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

SQL Server中按指定列关联条数对表行降序重排的SQL实现

原有代码问题说明

你编写的SQL仅返回了分组聚合后的疾病编码和对应症状计数,丢失了原始表中的症状编码列以及所有明细行,因此无法输出要求的重排后的完整表数据。


方案1:使用窗口函数(推荐,适配SQL Server 2008及以上版本)

直接通过窗口函数统计每个疾病对应的症状总数,基于该数值排序即可保留所有原始行:

SELECT D, S
FROM [D-S]
ORDER BY COUNT(S) OVER (PARTITION BY D) DESC, D

逻辑说明:COUNT(S) OVER (PARTITION BY D) 会为每行计算该行对应疾病的症状总数量,按该值降序排序即可实现关联症状多的疾病整体靠前,追加的D排序用于保证症状数相同的疾病按编码有序排列。


方案2:兼容极老版本SQL Server的关联写法

如果使用的是不支持窗口函数的旧版本,可以先统计每个疾病的症状数,再和原表关联后排序:

SELECT t.D, t.S
FROM [D-S] t
INNER JOIN (
    SELECT D, COUNT(S) AS symptom_count
    FROM [D-S]
    GROUP BY D
) AS d_count ON t.D = d_count.D
ORDER BY d_count.symptom_count DESC, t.D

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:36:04