【发布时间】:2019-11-09 11:09:21
【问题描述】:
我想从不同的表中计算不同的列。 我正在尝试从我的代码中获得所需的结果,但结果 给我两次相同的数据行
我的 oracle 数据库中有 3 个表 rolls_purchase,rolls_issue,rolls_consumption
CREATE TABLE ROLLS_purchase(
V_ID INT,
ENT_DATE DATE,
ENT_TIME DATE,
QUALITY VARCHAR2(25),
ROLL_QTY INT,
ROLL_SIZE INT);
CREATE TABLE ROLLS_ISSUE(
V_ID INT,
ISSUE_DATE DATE,
ISSUE_TIME DATE,
QUALITY VARCHAR2(25),
ROLL_SIZE INT,
ROLL_QTY INT,
TO_PO VARCHAR2(100)
);
CREATE TABLE ROLLS_consumption(
V_ID INT,
ISSUE_DATE DATE,
ISSUE_TIME DATE,
QUALITY VARCHAR2(25),
ROLL_SIZE INT,
ROLL_QTY INT,
ROLL_USED INT,
LEFT_ROLL INT
);
当我购买卷并将数据放入我的rolls_purchase 表时,我得到了结果
正确,之后我使用rolls_issue 表单进行问题滚动,然后我的表单编码做得很好,第三步是当用户使用滚动时,如果有剩余并返回给我,我需要在使用时将它们添加回来代码然后结果给了我两次相同的行,如下所示。
select x.quality,x.roll_size,sum(x.roll_qty)as
"TOTAL_ROLL",NVL(SUM(I.ROLL_QTY),0)
from rolls x, rolls_issue I
where x.quality is not null
group by x.quality,x.roll_size,I.ROLL_QTY,I.QUALITY;
以上代码结果为
quality size t.roll used
FLOUTING 100 GSM 44 150 40
FLOUTING 100 GSM 44 150 20
FLOUTING 125 GSM 36 50 40
我需要这个结果,如果发出我的卷然后上面的代码计算我的卷组并将它们相加只有一行,如下所示
quality size t.roll used
FLOUTING 100 GSM 44 150 60
FLOUTING 125 GSM 36 50 40
【问题讨论】:
-
我在
rolls_purchase和rolls_issue之间看不到要在联接条件中使用的公共列。rolls的意思是rolls_purchase吗?