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

如何在SQL Server 2019中实现交错排序以生成差异报表

解决全外连接结果的ID交错排序问题

你的查询已经准确筛选出了目标差异记录(ID仅存在于单表、或ID相同金额不同的情况),要实现按ID交错排序,只需在查询末尾添加基于统一ID基准的排序逻辑即可:

select 
    t.ID as TranID, 
    t.Amt as TranAmt, 
    m.ID as ModID, 
    m.Amt as ModAmt,
    -- 可选:添加来源标识,让报表更清晰
    case 
        when t.ID is null then '仅存在于#ModSum'
        when m.ID is null then '仅存在于#TranSum'
        else 'ID相同但金额差异'
    end as DiffType
from #TranSum t 
full outer join #ModSum m on t.ID = m.ID
where isnull(t.Amt, 0) <> isnull(m.Amt, 0)
-- 核心排序逻辑:取非空的ID作为排序键,确保同ID记录相邻
order by coalesce(t.ID, m.ID)

关键说明:

  • coalesce(t.ID, m.ID)会优先取t.ID,如果t.ID为NULL(即该记录仅存在于#ModSum),则取m.ID,这样无论ID来自哪张表,相同ID的记录都会被归为一组,实现你要的交错排序效果。
  • 额外添加的DiffType列可以帮你快速区分差异类型,让报表可读性更强,不需要的话可以直接去掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:44:54