プロが教える店舗&オフィスのセキュリティ対策術

下記のSQL文な実行するとエラーになってしまいます。
数時間考えましたが、上手く行きません。

どなたか教えて頂けないでしょう?
宜しくお願いします。

DB:アクセス97 アクセス2000

SQL実行中に以下のエラーが発生しました。
エラーコード:-3010 [Microsoft][ODBC Microsoft Access Driver] パラメータが少なすぎます。1 を指定してください。
SQLステータス:07001


SELECT
mid(U.受払年月日,1,6),
U.部門CD,
部門マスタ.部門名,
U.商品CD,
商品マスタ.商品名,
U.科目CD,
科目マスタ.科目名,
U.SUM受払数
FROM
(部門マスタ INNER JOIN ((SELECT mid(受払年月日,1,6),部門CD,商品CD,科目CD,SUM(受払数) as SUM受払数
FROM 受払TBL
WHERE 受払年月日 BETWEEN '201101' and '201105'
GROUP BY mid(受払年月日,1,6),部門CD,商品CD,科目CD) AS U
INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD) ON 部門マスタ.部門CD = U.部門CD )
INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD
ORDER BY
U.受払年月日,
U.部門CD,
U.商品CD,
U.科目CD

A 回答 (2件)

>エラーコード:-3010 [Microsoft][ODBC Microsoft Access Driver] パラメータが少なすぎます。

1 を指定してください。
とでてくるのは、SELECTの次のmid(U.受払年月日,1,6)で、U.受払年月日が認識できなくて、
パラメタが足りないっておこられているのでは?

というのは、
★のところ。

FROM
(部門マスタ INNER JOIN ((SELECT mid(受払年月日,1,6),部門CD,商品CD,科目CD,SUM(受払数) as SUM受払数
FROM 受払TBL
WHERE 受払年月日 BETWEEN '201101' and '201105'
GROUP BY mid(受払年月日,1,6),部門CD,商品CD,科目CD) AS U
INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD) ON 部門マスタ.部門CD = U.部門CD )
★ここにas uがないのでSELECT句内で、U.XXXとつけても見つからないと思いますが。
INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD

fromの次の(と★の直前の)を削除すると、副問い合わせにならないので、
U.XXXはみつかるはずですが。
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。
すいません。私のスキル不足で申し訳ありません。
削除すると副問い合わせが出来なくなってしまうのでは、ないでしょうか?

お礼日時:2011/05/18 19:34

部門マスタとInnerJoinする 仮想表 U の[受払年月日]は何桁ですか?


midで6文字切り出している割にはWhere条件のBetweenで6桁記述ですね。

副問い合わせになる部分[U]を独立したクエリで定義したほうが見やすいかも。

この回答への補足

回答、ありがとうございます。
受払年月日は、8桁(yyyymmdd)です。
年月(yyyymm)で集計したいと考えてます。
WHERE 受払年月日 BETWEEN '20110101' and '20110531'に訂正します。

補足日時:2011/05/17 20:44
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

なんとか解決しました。
ありがとうございました。

お礼日時:2011/05/18 21:44

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

関連するカテゴリからQ&Aを探す