プロが教えるわが家の防犯対策術!

Access2000(VBA)にてパススルークエリを生成してOracleのデータを取得しようとしております。
結果は正しく取得できるのですが、取得にかかる時間が非常に遅くて困惑しております。

SQL*plusやObjectBrowser等でSQLを実行すると2秒程度で結果が返るのですが、
Accessのパススルークエリですと60秒程度かかります。

SQLの内容は以下のように集計するものになります。
どなたか、改善方法が分かる方がいらっしゃればお教え下さい。

以上です。

SELECT
A.請求先コード 請求先CD,
B.会社名 請求先名,
20140401 集計開始日,
20140431 集計終了日,
SUM(A.合計金額) 合計金額_合計,
SUM(A.消費税額_外税) 消費税額_合計,
(SUM(A.合計金額) + SUM(A.消費税額_外税)) 税込合計金額_合計,
SUM(D.入金額) 入金額_合計,
((SUM(A.合計金額) + SUM(A.消費税額_外税)) - SUM(NVL(D.入金額,0))) 未入金額_合計
FROM
売上_TRN A,
顧客先_MST B,
入金_TRN D,
顧客_TRN E,
顧客_TRN F
WHERE
A.請求先コード = B.顧客先コード AND
A.顧客先コード = E.顧客先CD AND
A.請求先コード = F.顧客先CD AND
A.売上日 Between 20140401 AND
20140431 AND
A.売上NO = D.売上NO(+) AND
(nvl(A.摘要コード1,' ') <> 'DM') AND
A.赤伝NO = ' '
GROUP BY
A.請求先コード,
B.会社名
ORDER BY
A.請求先コード

A 回答 (1件)

> SELECT A.請求先コード 請求先CD, B.会社名 請求先名,



> GROUP BY A.請求先コード, B.会社名
> ORDER BY A.請求先コード

GROUP BY 1, 2
ORDER BY 1
としたらどうなりますか?
SELECTで別名付けたなら、Whereでも統一したほうが良いかも。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!