古い ASP ファイルを新しい .NET 2.0 コードに複製する際に問題が発生しました。タスクの 1 つは、4 ~ 5 個の SQL ステートメントを 1 つにマージすることです。私はこれを行い、パフォーマンスの向上にある程度成功しましたが、Oracle は私にとって新しいバッグです。ただし、この問題は、これまで行ったことがないため、自分の SQL スキルを超えています。
基本的に、私はたくさんの Sales から 1 つのテーブルに QUANTITY を持っています。各売上には整数値があります。各セールには ITEM が添付されています。各 ITEM には、何かの 1 袋 = 何かの 10 束を販売するかのように、変換係数があります。したがって、レポートを実行して最終値を知りたい場合は、各売上とその数量を取得し、換算係数で乗算する必要があります。ほとんどが単純な 1 対 1 なので、基本的には 25*1、30*1 などを行っています。
私の問題は、アイテムがシステムから削除された過去の販売が記録にあるため、CONVERSION ファクターが存在しないことです。FACTOR がなくなったため、これらのレコードはクエリから削除されます。
SELECT rth.CODE, rth.NUMBER, rth.QUANTITY, rth.sale_code
FROM salesdetails rth, salesheader rsh
WHERE rsh.number = rth.number(+)
AND rsh.customer_code = '05'
AND rsh.r_code = '01'
AND rsh.location_code = '12'
AND rth.sale_code IN('ITEM07')
AND rth.c_code = 'WLMT'
AND rsh.year = '2008'
これは私の最初のクエリです。変換を追加すると:
SELECT rth.CODE, rth.NUMBER, rth.QUANTITY, rth.sale_code, rth.quantity * cf.conversion
FROM salesdetails rth, salesheader rsh, conversionfactor cf
WHERE rsh.number = rth.number(+)
AND rsh.customer_code = '05'
AND rsh.r_code = '01'
AND rsh.location_code = '12'
AND rth.sale_code IN('ITEM07')
AND rth.c_code = 'WLMT'
AND rsh.year = '2008'
AND cf.item_code = rth.item_code
and cf.code = '01'
and cf.loc_code = '00001'
これはある程度機能します。同じレコードがすべてリストされていますが、CONVERSION 因子が存在しなかったレコードはありません。とにかく、FACTORが2番目のクエリに存在しなかったレコードを含めることができます.1行ずつ行ってそのように変換することはできません.