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

SQL查询需求:将表中配送与取货列数据拆分至独立行

拆分配送与取货数据至独立行的SQL实现

现有数据库表中,每行同时包含配送(Delvr字段,值为1表示需要配送)和取货(Pickup字段,值为1表示需要取货)的布尔标识,需通过SQL查询将两种业务类型的数据拆分到独立行中:

  • 新增TripType列,标记该行是配送(Delivery)还是取货(Pickup)
  • 对应类型的日期填入TripDate列,配送用DeliveryDate,取货用PickupDate

当前表结构及数据

OrderNAMEDelvrDeliveryDatePickupPickupDateQTYItem Name
198747Joe Dirt17/31/202318/4/202332Item 1
198747Joe Dirt17/31/202318/4/202320Item 2
198747Joe Dirt17/31/202318/4/20235Item 3

期望查询结果

OrderNAMETripTypeTripDateQTYItem Name
198747Joe DirtDelivery7/31/202332Item 1
198747Joe DirtDelivery7/31/202320Item 2
198747Joe DirtDelivery7/31/20235Item 3
198747Joe DirtPickup8/4/202332Item 1
198747Joe DirtPickup8/4/202320Item 2
198747Joe DirtPickup8/4/20235Item 3

解决方案SQL

使用UNION ALL合并两个独立查询的结果,分别处理配送和取货的场景,同时过滤掉不需要生成行的记录:

-- 获取配送类型的行
SELECT 
    "Order",
    NAME,
    'Delivery' AS TripType,
    DeliveryDate AS TripDate,
    QTY,
    "Item Name"
FROM 
    your_table_name
WHERE 
    Delvr = 1

UNION ALL

-- 获取取货类型的行
SELECT 
    "Order",
    NAME,
    'Pickup' AS TripType,
    PickupDate AS TripDate,
    QTY,
    "Item Name"
FROM 
    your_table_name
WHERE 
    Pickup = 1
ORDER BY 
    "Order", NAME, TripType, "Item Name";

说明

  • UNION ALL保留所有符合条件的行,不会去重,适配拆分多行的需求
  • WHERE子句确保只生成对应业务类型为真的行,若某行仅存在配送或取货标识,只会生成对应类型的行
  • ORDER BY用于整理结果顺序,保证数据呈现整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:54:56