连接密钥问题

oxf4rvwz  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(355)

我正在创建hana视图,在这里我必须连接两个表,我的基表将显示表2和按数量显示项目。
表1

Bill No  | Item    | Qty |
BILL001  | ITEM001 | 1   |
BILL001  | ITEM002 | 3   |
BILL001  | ITEM002 | 2   |

表2

Bill No  |BarCode | Qty |
BILL001  |BarC01  | 1   | 
BILL001  |BarC02  | 1   |
BILL001  |BarC03  | 1   |
BILL001  |BarC04  | 1   |
BILL001  |BarC05  | 1   |
BILL001  |BarC06  | 1   |

要求的结果

Bill No  |BarCode | Qty | Item    |
BILL001  |BarC01  | 1   | ITEM001 |
BILL001  |BarC02  | 1   | ITEM002 |
BILL001  |BarC03  | 1   | ITEM002 |
BILL001  |BarC04  | 1   | ITEM002 |
BILL001  |BarC05  | 1   | ITEM003 |
BILL001  |BarC06  | 1   | ITEM003 |

重要提示-在表2中,数量始终为1。
谢谢

sbtkgmzw

sbtkgmzw1#

如果我理解正确,您可以使用窗口函数:

select t2.*, t1.item
from (select t2.*,
             row_number() over (partition by bill_no order by barcode) as seqnum
      from table2 t2
     ) t2 left join
     (select t1.*, sum(qty) over (partition by bill_no) as running_qty
      from t1
     ) t1
     on t2.seqnum > t1.running_qty - qty and
        t2.seqnum <= running_qty;

这是任意分配项的,因为没有其他分配信息。

相关问题