订单数量交货后加倍

时间:2018-11-12 16:37:21

标签: sql hana sql-scripts

我们可以为一个订单项提供多个交货。因此,当我将订单项与交货一起加入时,我会得到多行。现在,如果我想获得订单商品级别的订单数量(不包括交货商品),则会得到错误的汇总。我理解查询为什么会这样,但是不确定如何在每个可能的钻取级别使聚合正确。

Order Table

Deliver Table

After joining Order and Deliv

Result is Correct at Order ID,Item, Product level.

2 个答案:

答案 0 :(得分:0)

这就是我要解决这个问题的方式。从外观上看,您的桌子对我而言似乎不规范。您在两个表中都有ORD_ID和ORD_ITM。您应该只在您的T_ORDER表中存在此内容,然后在您的T_DELIV表中存在ORD_ITM。在您还显示的图中,您没有OrderItem_table,因此它会给您带来混乱。但是,使用我的解决方案,只需将您的ORD_ITM用作交付表中的外键,然后通过此字段加入即可。希望这会有所帮助。

答案 1 :(得分:0)

您提供的数据有问题

订单10001项30的产品在一个表中为P2,在另一个表中为P3

能否以以下格式提供示例数据和表格结构,以便其他人可以轻松地为您提供帮助

create column table T_ORDER (
ORD_ID int,
ORD_ITM int,
PROD varchar(5),
ORD_QTY int
);

create column table T_DELIV (
DELIV_ID int,
DELIV_ITM int,
ORD_ID int,
ORD_ITM int,
DELIV_QTY int,
PROD varchar(5)
);

insert into T_ORDER values (10001,10,'P1',50);
insert into T_ORDER values (10001,20,'P1',60);
insert into T_ORDER values (10001,30,'P2',40);
insert into T_ORDER values (10001,40,'P3',30);
insert into T_ORDER values (10002,50,'P4',20);


insert into T_DELIV values (50001,10,10001,10,20,'P1');
insert into T_DELIV values (50001,20,10001,10,30,'P1');
insert into T_DELIV values (50002,10,10001,20,60,'P2');
insert into T_DELIV values (50002,20,10001,30,30,'P3');
insert into T_DELIV values (50003,10,10001,40,10,'P3');
insert into T_DELIV values (50003,20,10001,40,15,'P3');