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

如何用SQL将查询结果转换为指定列结构(无需Pivot)

解决方案:使用条件聚合实现行转列

首先修正原查询中的逻辑错误:AND (a.kndnr = '10027' and a.kndnr = '10026') 不符合逻辑,一个字段无法同时等于两个不同值,应改为 AND a.kndnr IN ('10027', '10026') 或者 AND (a.kndnr = '10027' OR a.kndnr = '10026')。

以下是无需使用Pivot的SQL写法,适用于Databricks SQL、Oracle、MySQL等主流SQL环境:

SELECT
  MAX(CASE WHEN a.code = 'A00' THEN a.value END) AS A00,
  MAX(CASE WHEN a.code = 'A01' THEN a.value END) AS A01,
  a.kndnr
FROM
  raw a
  JOIN z_raw b ON a.code = b.zgrpc
WHERE
  b.gubun = '09811'
  AND concat(a.gjahr, a.poper) = '2024001'
  AND a.artnr = 'F004000'
  AND a.prctr = '021011'
  AND a.artnr_t = 'H50M'
  AND a.kndnr IN ('10027', '10026')
GROUP BY
  a.kndnr;

逻辑说明

  • 通过CASE WHEN语句,针对每个code值(A00、A01)提取对应的value
  • 使用MAX聚合函数(因为每个kndnr与code的组合仅存在一条数据,用MIN也可),确保每个kndnr分组下只保留对应code的唯一值
  • 最后按kndnr分组,将同一客户的不同code值转换为列,得到目标结果

内容的提问来源于stack exchange,提问作者홍찬혁

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:35:04