0

問題の説明: 倉庫... 1 つのコンテナーに 1 つの製品を 10 個、同じ製品を 3 個受け取りました。USER_DEF_NOTE_2 の値が異なります。テーブルの在庫:

SKU_ID;QTY_ON_HAND;CONTAINER_ID;USER_DEF_NOTE_2

SKU1;10;K001;OT 15/2013

SKU1;3;K001;WI 2011 年 14 月

最初の USER_DEF_NOTE_2 値と 3 番目の値で 10 x ラベルを印刷する必要があります。

レポート ソフトウェア入力は 1 行 = 1 ラベル

この場合、「複数行」にする方法は?

私はrownumで標準結合を行いましたが、WITH ONE ROW CASEで正常に動作します。(つまり、単一の行*数量を複数にする方法は知っていますが、1 * qty1 + 2 * qty2を掛ける方法はわかりません)。私の問題は、ROWNUM を使用していることです...そして、rownum はグローバルです。

何か案は?

4

2 に答える 2

1
select t.*
from INVENTORY t
join (select level n from dual 
      connect by level <= (select max(QTY_ON_HAND) from INVENTORY)) 
on n <= t.QTY_ON_HAND
于 2013-07-17T12:47:06.630 に答える
0

11gR2 からの再帰サブクエリ ファクタリング句が救いです!

create table test(code varchar2(10), n number);

insert into test values('FIRST', 10);
insert into test values('SECOND', 3);

with t(code, num) as (
  select code, 1 num from test
   union all
  select test.code, t.num + 1 num from t, test
   where t.code = test.code and t.num < test.n  
)
select *
  from t

ここで例を試してください。

于 2013-07-17T13:46:54.420 に答える