首页 > 解决方案 > 如何在没有唯一键的情况下减去 Oracle SQL 中的记录

问题描述

我有三个表schedule_master,我schedule_childsent_schedule表结构如下

create table schedule_master(
mp_order varchar2(20),
ent_date date,
ent_time date
);

create table schedule_child(
mp_order VARCHAR2(20),
party_name varchar2(30),
req_date date,
purchaser_name varchar2(25),
order_no varchar2(20),
item_size varchar2(30),
item_quality varchar2(100),
ply varchar2(30),
uom varchar2(10),
po_qty number,
po_rate FLOAT
);

CREATE TABLE SCHEDULE_SENT(
ENT_DATE DATE,
ENT_TIME DATE,
ORDER_NO NUMBER,
ITEM_SIZE VARCHAR2(150),
PO_QTY NUMBER,
SENT_QTY NUMBER
);

前两个表是数据输入表,做得很好,第三个表是用于发布材料。当我在这个表中输入我的记录时,我想通过减去其他表的两个记录来得到结果。我正在使用这个语句作为我的结果但这给了我错误减法的结果。我的代码在下面

SELECT SC.ORDER_NO,SC.ITEM_SIZE || ' ' || SC.UOM || ' ' || SC.PLY || ' < ' || SC.ITEM_QUALITY || ' > 
' as "ITEM SIZE",sc.po_qty,NVL(SS.SENT_QTY,0)SENT ,sc.po_qty-NVL(SS.SENT_QTY,0) AS "BALANCE" FROM 
schedule_child SC 
LEFT JOIN SCHEDULE_SENT SS ON sC.order_no=sS.order_no
WHERE sc.order_no=sc.order_no
ORDER BY sc.mp_order ASC;

上面的代码给了我错误的结果并尝试了很多次来解决这个结果如下

  po_order        item_size                              po_qty  sent  balance 
 21563  17.25X9.75X20 INCH 7 PLY CTN BROWN               127    0     127
 21563  17.25X10.75X20 INCH 7 PLY CTN BROWN              508    0     508
 21368  3.35X8.5 INCH 3 PLY STIFFNER BROWN               11643  180   11463
 21368  16.5X11.75X16.5 INCH 7 PLY CTN BROWN              95    180   -85
 21368  16.5X11.75X17.5 INCH 7 PLY CTN BROWN             182    180   2
 21534  34.75X4.5X34.75X34.75 CM 5 PLY STIFFNER WHITE    3060   0     3060
 21472  22.25X17X11 INCH 7 PLY CTN BROWN                 226    0     226
 21472  22.25X17X15 INCH 7 PLY CTN BROWN                 598    0     598

正如我们可以看到上面的结果是错误的。我只是发布180 ctn并且应该只平衡这个项目2但是这个代码也给了我其他项目减去了。我想要下面的结果

po_order        item_size                              po_qty  sent  balance 
 21563  17.25X9.75X20 INCH 7 PLY CTN BROWN               127    0     127
 21563  17.25X10.75X20 INCH 7 PLY CTN BROWN              508    0     508
 21368  3.35X8.5 INCH 3 PLY STIFFNER BROWN               11643  0     11643
 21368  16.5X11.75X16.5 INCH 7 PLY CTN BROWN              95    0     95
 21368  16.5X11.75X17.5 INCH 7 PLY CTN BROWN             182    180   2
 21534  34.75X4.5X34.75X34.75 CM 5 PLY STIFFNER WHITE    3060   0     3060
 21472  22.25X17X11 INCH 7 PLY CTN BROWN                 226    0     226
 21472  22.25X17X15 INCH 7 PLY CTN BROWN                 598    0     598

标签: sqloracle10gsubtractioncumulative-sum

解决方案


推荐阅读