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

如何按示例将行拆分为两列?订单号对应CAD与Amend列技术问询

解决订单号拆分多行的问题

我明白你的痛点啦——现在同一个订单因为同时存在CAD Approved和Amendment Sent PartNo两种状态,被拆成了两行,而你想要每个订单对应一行数据,同时包含CAD列和Amend列对吧?其实你之前觉得CASE语句不可行,大概率是没结合聚合函数一起用,这恰恰是解决这个问题的关键!

核心思路

我们需要按订单号分组,然后用聚合函数(比如MAX/MIN)配合CASE语句,把不同状态下的对应值合并到同一行的不同列中。

示例SQL代码

假设你的原始数据表结构大致如下(如果和实际有出入,只需调整CASE里的判断条件即可):

  • 表名:order_status
  • 字段:order_no(订单号)、status_type(状态类型,比如'CAD Approved'或'Amendment Sent PartNo')、status_content(状态对应的具体内容,比如审批时间、修订编号等)

对应的解决SQL:

SELECT
    order_no,
    -- 提取CAD Approved状态对应的内容,没有则返回NULL
    MAX(CASE WHEN status_type = 'CAD Approved' THEN status_content ELSE NULL END) AS CAD,
    -- 提取Amendment Sent PartNo状态对应的内容,没有则返回NULL
    MAX(CASE WHEN status_type = 'Amendment Sent PartNo' THEN status_content ELSE NULL END) AS Amend
FROM
    order_status
GROUP BY
    order_no;

代码解释

  1. GROUP BY order_no:强制让数据库按订单号分组,确保每个订单最终只输出一行数据
  2. MAX(CASE ...):对于每个订单分组,找到匹配对应状态类型的记录,提取它的内容;如果该订单没有这个状态,就返回NULL。用MAX是因为同一订单同一状态类型通常只会有一条记录,聚合函数会直接取到唯一的那个值(用MIN也能达到同样效果)

这样处理后,不管订单有没有其中一种状态,都会以一行的形式展示,完美符合你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:12:26