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

SQL行转列需求:将RollupCatCd值转为JobCd对应列

实现SQL行转列需求

你可以直接通过SQL的行转列功能完成数据格式转换,无需手动创建透视表或使用VLOOKUP。以下提供两种适用于SQL Server的方案:

方案1:CASE WHEN + 分组聚合(兼容性强)

SELECT 
    JobCd,
    MAX(CASE WHEN RollupCatCd = 'CRP' THEN RollupCd END) AS CRP,
    MAX(CASE WHEN RollupCatCd = 'DIV' THEN RollupCd END) AS DIV,
    MAX(CASE WHEN RollupCatCd = 'GRP' THEN RollupCd END) AS GRP,
    MAX(CASE WHEN RollupCatCd = 'REG' THEN RollupCd END) AS REG
FROM [Gorilla].[dbo].[jobCtrl_Rollup]
WHERE CurrentYN = '1'
GROUP BY JobCd
ORDER BY JobCd;
  • 逻辑:通过GROUP BY JobCd将同一JobCd的记录聚合,用CASE WHEN匹配对应的分类码,提取对应的RollupCd值;MAX函数用于自动忽略NULL值,保留有效数据。

方案2:SQL Server PIVOT运算符(语法简洁)

SELECT 
    JobCd,
    CRP,
    DIV,
    GRP,
    REG
FROM (
    -- 先筛选出需要的基础数据
    SELECT JobCd, RollupCatCd, RollupCd
    FROM [Gorilla].[dbo].[jobCtrl_Rollup]
    WHERE CurrentYN = '1'
) AS SourceData
PIVOT (
    -- 对RollupCd取聚合值(因每个JobCd+分类码唯一,MAX/MIN效果一致)
    MAX(RollupCd)
    -- 指定要转成列的字段和具体列值
    FOR RollupCatCd IN (CRP, DIV, GRP, REG)
) AS PivotTable
ORDER BY JobCd;
  • 逻辑:子查询先获取过滤后的基础数据,PIVOT运算符直接将RollupCatCd的指定值转为列名,自动完成数据映射。

两种方案均可直接输出你期望的格式,替代繁琐的手动数据整理步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:04:53