これを行う方法はあると思いますが、他の多くの人がそうであるように、私はORACLE10gに精通していません。シナリオは次のとおりです。
現在、クラシックASPページをASP.net2.0に変換しています。レポートを作成しているクエリがあります。売上高と以前の売上高を報告しています。現在起こっていることは、1つのクエリがデータベースに送信され、当社の製品を販売している場所の完全なリストを取得することです。次に、場所のすべての行をループし、SQLでいくつかの合計操作を実行します。
他のいくつかのテーブルに送信され、販売数量を合計してから、合計をテーブル行に追加します。ロケーションクエリは多くの結果を返すため、クエリには2〜3分かかります。
私の質問は、これらすべてを1つのクエリに統合するにはどうすればよいかということです。
場所のクエリ:
SELECT DISTINCT t.location,
l.city,
f.year,
f.customer FROM loc t,
location l, father_table f
WHERE f.number = t.number(+)
AND f.code = '0001'
AND f.c_code = '01'
AND t.location= l.code(+)
AND t.code IN ('C', 'S')
AND t.co_code IN ('G', 'V', 'A', 'D')
AND t.year = '2008'
ORDER BY l.city, f.year
上記のクエリの各行の合計クエリは次のとおりです。
SELECT SUM(nvl(t.sale_quantity,0)) sale_quantity
FROM loc t, father_table f
WHERE f.number = t.number(+)
AND f.code = '0001'
AND f.c_code = '01'
AND f.year = '2008'
AND t.code = 'C'
AND t.location = '1566' <----- EACH ROW'S t.location VALUE
AND t.co_code IN ('G', 'V', 'A', 'D')
GROUP BY t.location, t.code, f.year
元のクエリの各レコードをループする代わりに、クエリを組み合わせて、ロケーションのクエリにSUMを含める方法はありますか。ここで重要なのは、t.code ='C'ではなく'C'&'S'の場合にのみ、2番目のクエリが売上合計を取得することです。