Проблема с ключами присоединения - PullRequest
0 голосов
/ 13 июля 2020

Я создаю представление 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 Ответ

0 голосов
/ 13 июля 2020

Если я правильно понимаю, вы можете использовать оконные функции:

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;

Это произвольно назначает элементы, потому что нет информации для их назначения в противном случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...