-- 签收单:按序列号 receipt_no 取主表头 + 聚合多排产号多箱的明细。 -- 参数:receipt_no (str, 11 位序列号) -- 注:load_sql 会剥离整行 -- 注释,故注释里可自由书写中文。 -- -- 数据来源: -- warehouseOutbound.delivery_receipt 签收单主表(收发方/客户总排行号/运输/日期) -- warehouseOutbound.delivery_receipt_item 签收单明细(仅 receipt_no + paichan_no + box_no) -- CargoTrace.finished_goods_box 箱头(按 paichan_no + box_no 定位) -- CargoTrace.finished_goods_box_item 箱内明细(总排号 + 数量) -- productionContractData.26年压力表/温度计合同数据 产品信息 -- -- 设计要点: -- * 主表 LEFT JOIN 进明细链路,使每一行都冗余主表头字段; -- transform 取首行作为单头,其余行作为明细预展开。 -- * 明细粒度:一个 (箱号, 产品) 一行;同一箱同一产品数量 SUM 聚合。 -- * 排产号/订单号:由「箱内排产号 paichan_no + 合同表[订单号]」组合而成, -- 对应示例"排产号/订单号"列(不再单独取合同号)。 -- * 客户总排行号 customer_total_no 已在主表,直接带出,与内部 paichan_no 无关。 SELECT h.receipt_no, h.receipt_date, h.seq, h.shipper_name, h.shipper_address, h.shipper_phone, h.receiver_name, h.receiver_address, h.receiver_phone, h.customer_order_no, h.customer_total_no, h.transport_mode, h.ship_date, h.sign_date, h.signed_by, h.maker, h.remark AS receipt_remark, b.box_no, di.paichan_no AS paichan_no, COALESCE(p.[客户名称], t.[客户名称]) AS product_name, COALESCE(p.[产品型号], t.[产品型号]) AS model, COALESCE(p.[量程], t.[量程]) AS range_, COALESCE(p.[位号], t.[位号]) AS weihao, SUM(bi.quantity) AS qty, COALESCE(p.[订单号], t.[订单号]) AS order_no FROM warehouseOutbound.delivery_receipt h JOIN warehouseOutbound.delivery_receipt_item di ON di.receipt_no = h.receipt_no JOIN CargoTrace.finished_goods_box b ON b.paichan_no = di.paichan_no AND b.box_no = di.box_no JOIN CargoTrace.finished_goods_box_item bi ON bi.box_id = b.id LEFT JOIN [productionContractData].[26年压力表合同数据] p ON p.[总排号] = bi.zongpai_no LEFT JOIN [productionContractData].[26年温度计合同数据] t ON t.[总排号] = bi.zongpai_no WHERE h.receipt_no = :receipt_no GROUP BY h.receipt_no, h.receipt_date, h.seq, h.shipper_name, h.shipper_address, h.shipper_phone, h.receiver_name, h.receiver_address, h.receiver_phone, h.customer_order_no, h.customer_total_no, h.transport_mode, h.ship_date, h.sign_date, h.signed_by, h.maker, h.remark, b.box_no, di.paichan_no, COALESCE(p.[客户名称], t.[客户名称]), COALESCE(p.[产品型号], t.[产品型号]), COALESCE(p.[量程], t.[量程]), COALESCE(p.[位号], t.[位号]), COALESCE(p.[订单号], t.[订单号]) ORDER BY b.box_no;