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

如何使用Case语句将多行数据合并到单列中?

问题分析

你当前的SQL写法是逐行生成拼接字符串,再按拼接结果分组,这会导致每个不同的行输出一条独立结果,无法实现按PRD_ID聚合合并的需求。

解决方案

核心思路是先按PRD_ID分组,分别提取每个容器层级对应的QTY值(无值则用0替代),再按4到1的顺序拼接成目标格式:

SELECT 
    PRD_ID,
    CONCAT(
        ISNULL(dbo.FBE_GetThousandSeparator(MAX(CASE WHEN CONTAINER_LVL = 4 THEN QTY END), 0), '0'), '/',
        ISNULL(dbo.FBE_GetThousandSeparator(MAX(CASE WHEN CONTAINER_LVL = 3 THEN QTY END), 0), '0'), '/',
        ISNULL(dbo.FBE_GetThousandSeparator(MAX(CASE WHEN CONTAINER_LVL = 2 THEN QTY END), 0), '0'), '/',
        ISNULL(dbo.FBE_GetThousandSeparator(MAX(CASE WHEN CONTAINER_LVL = 1 THEN QTY END), 0), '0')
    ) AS QTY
FROM #TMP2
GROUP BY PRD_ID
代码说明
  1. 提取各层级QTY:MAX(CASE WHEN CONTAINER_LVL = N THEN QTY END)会针对每个PRD_ID,提取对应层级的QTY值(每个层级仅一行数据,MAX直接取到目标值,无数据则返回NULL)。
  2. 处理空值:用ISNULL(..., '0')将NULL替换为'0',保证无值时显示0。
  3. 拼接字符串:通过CONCAT按4→3→2→1的顺序拼接,用'/'分隔各值,最终生成目标格式。
  4. 分组逻辑:仅按PRD_ID分组,确保每个产品仅输出一行合并结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 05:05:18