0

ビューでこれを行いたいと思います。

テーブル ordertrans を使用する Crystal reprt があります。このテーブルには、注文に関するデータが含まれています。これはMFGです。そのため、注文はカスタムであることが多く、パズルの各ピースがこの表にリストされます。パッキングコード PDB. 以前の CR は 001 のオーダー番号とレコードの選択に参加していました。PDB にもレコードの選択を追加しました。PDB を 1 回だけ選択するビューが必要です。2 つ以上ある場合は、何らかのエラーまたはまれな状態である可能性が非常に高く、レポートには適用されません。問題は、2 番目の PDB がレポートではなく EXCEL EXPORT でフォーマット エラーを引き起こしていることです。現在のビューの代わりに使用するビューが必要です。現在のものは001またはパッキングコードのみを選択するわけではありませんが、理論的には001およびpdbのものしか選択できないと思います。実際には3つのそのようなコードがあり、簡単にするために1つ言及します。

注文番号 TRNCDE

123 001
123 999
123 PDB
123 AAA
123 BBB
123 PDB

123 CCC

4

2 に答える 2

3

ORDERTRANS に明細番号またはシーケンス番号があると仮定して、一意の各注文/トランザクションの組み合わせに対して最小のものを選択します。

with min as 
  (select order#, trncde, min(line#) as line#
   from ordertrans
   group by order#, trncde)
select *
from ordertrans o
  join min m on o.order#=m.order# and
                o.trncde=m.trncde and
                o.line#=m.line#
order by order#, trncde;

PDB行を互いに区別するのに役立つ一意の行番号、タイムスタンプ、またはシーケンス番号がない場合は、代わりにRRNを試すことを検討してください。

with min as 
  (select order#, trncde, rrn(ordertrans) as line#
   from ordertrans
   group by order#, trncde)
select *
from ordertrans o
  join min m on o.order#=m.order# and
                o.trncde=m.trncde and
                rrn(o)=m.line#
order by order#, trncde;
于 2013-11-01T14:53:12.613 に答える
0

RRN() はインデックスの構築を引き起こし、パフォーマンス ヒットを引き起こします。(ビルギッタ・ハウザーによると)

PDB行を互いに区別するのに役立つ一意の行番号、タイムスタンプ、またはシーケンス番号がない場合は、ROW_NUMBER() の生成を検討してください。

with min as 
(select order#, trncde, 
        ROW_NUMBER() OVER(PARTITION BY order# ORDER BY another_col) as pick
   from ordertrans
   group by order#, trncde
) 
select *
  from ordertrans o
  join min        m    on  o.order#=m.order# 
                       and o.trncde=m.trncde 
                       and m.pick = 1
  order by order#, trncde;
于 2013-11-05T06:05:16.567 に答える