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

如何为SQL Server的PIVOT查询添加另一组数据汇总

解决SQL Server PIVOT多区间汇总问题

你的问题核心在于子查询中没有生成用于区分不同LINE_NUM区间的分组字段,导致两个区间的数据被合并汇总成了一行。以下是修正后的方案:

修正后的查询代码

SELECT PRVDR_NUM, LINE_NUM_RANGE, [2020], [2019], [2018], [2017], [2016], [2015]
FROM
(
    SELECT 
        ITM_VAL_NUM, 
        YR, 
        PRVDR_NUM,
        -- 用CASE语句给每个LINE_NUM分配对应的区间标签
        CASE 
            WHEN LINE_NUM BETWEEN '00100' AND '02399' THEN '00100-02399'
            WHEN LINE_NUM BETWEEN '03000' AND '04699' THEN '03000-04699'
        END AS LINE_NUM_RANGE
    FROM dbo.newfile
    WHERE 
        PRVDR_NUM = '410007' 
        AND WKSHT_CD = 'B000001' 
        AND CLMN_NUM = '00000'
        -- 用括号确保OR的逻辑优先级正确
        AND (
            LINE_NUM BETWEEN '00100' AND '02399' 
            OR LINE_NUM BETWEEN '03000' AND '04699'
        )
) t
PIVOT(
    SUM(ITM_VAL_NUM) 
    FOR YR IN ([2020], [2019], [2018], [2017], [2016], [2015])
) AS pivot_table;

关键改动说明

  1. 新增区间分组字段:通过CASE语句将单个LINE_NUM映射到对应的区间名称(LINE_NUM_RANGE),这是实现按区间分行汇总的核心。
  2. 修正WHERE逻辑:将区间判断用括号包裹,避免因AND优先级高于OR导致的逻辑错误,同时简化了重复的过滤条件。
  3. 明确输出字段:指定要展示的字段,避免PIVOT后出现冗余列。

预期结果

PRVDR_NUMLINE_NUM_RANGE202020192018201720162015
41000700100-0239984634180570888
41000703000-04699numbernumbernumbernumbernumbernumber

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:25:14