> INNER JOINだと問題なくデータが得られますが、(旧税率分のみ)
> LEFT JOINだと結合式がサポートされてませんと表示されます。
当方の環境(Win7 Access2010)でシンプルなサンプルを作成して確認してみましたが、問題なく表示されました。
確認したSQL
SELECT A.*, B.*
FROM A LEFT JOIN B ON (A.[コード] \ 10) = B.[コード];
原因は他にあるように思えます。
SQLを見てみると、INNER JOIN と LEFT JOIN が混在してますが、その辺の整合性が怪しそうな感じですね。
SQLビューにして、そこで変更すれば可能です。
ただし、以降、ザインビューで表示はできなくなります。
例
・・・
FROM
売上明細 INNER JOIN 消費税 On 売上明細.DENUMBER = 消費税.ATS_ORGNumber
となっているのを、
・・・
FROM
売上明細 INNER JOIN 消費税 On Int(売上明細.DENUMBER / 10) = 消費税.ATS_ORGNumber
とします。
ちなみに、
Int(売上明細.DENUMBER / 10)
は
売上明細.DENUMBER \ 10
とした方が高速です。(体感できる差が出ることは稀だと思いますが)
質問者
補足
ご回答、有り難うございます。
助かります。
¥10に修正して実行しました。
同じ結果が得られました。
INNER JOINだと問題なくデータが得られますが、(旧税率分のみ)
LEFT JOINだと結合式がサポートされてませんと表示されます。
売上明細テーブルの対象は16万件、消費税テーブル(旧税率)の対象は500件程です。
SELECT dbo_SALE.DENUMBER, dbo_SALE.DETYPE, dbo_CUSTOMER.CU_SHOPSTYLE,
dbo_SALE_M.DMBRAND, dbo_MASTER.MA_OUTLET, Int([DENUMBER]\10) AS 式1,
dbo_AdjustTax_S.ATS_Rate, Sum(dbo_SALE_M.DMKINGAKU) AS 計,
IIf(([DETYPE]=1),[計],[計]*-1) AS 金額, DSum("[金額]","金額") AS 合計
FROM (((dbo_SALE INNER JOIN dbo_SALE_M ON dbo_SALE.DENUMBER=dbo_SALE_M.DMNUMBER)
INNER JOIN dbo_CUSTOMER ON dbo_SALE.DETCODE=dbo_CUSTOMER.CU_CODE)
INNER JOIN dbo_MASTER ON dbo_SALE_M.DMHINBAN=dbo_MASTER.MA_CODE)
LEFT JOIN dbo_AdjustTax_S ON Int(dbo_SALE.DENUMBER\10)=dbo_AdjustTax_S.ATS_ORGNumber
WHERE (((dbo_SALE.DEDATE)>=#4/1/2014# And (dbo_SALE.DEDATE)<=#4/30/2014#) AND ((dbo_SALE.DESLIPFLG)=0))
GROUP BY dbo_SALE.DENUMBER, dbo_SALE.DETYPE, dbo_CUSTOMER.CU_SHOPSTYLE,
dbo_SALE_M.DMBRAND, dbo_MASTER.MA_OUTLET, Int([DENUMBER]\10), dbo_AdjustTax_S.ATS_Rate
HAVING (((dbo_SALE.DETYPE)=1 Or (dbo_SALE.DETYPE)=2 Or (dbo_SALE.DETYPE)=5)
AND ((dbo_CUSTOMER.CU_SHOPSTYLE)<>"06"));
ご指摘くださると助かります。
宜しくお願い致します。
お礼
お手数をお掛けします。 色々と有り難うございます。 SQLビューで表示された内容のINNER JOINの箇所をLEFT JOINに修正しました。 INNER JOINではエラーもなく出力されます。 混在して整合性なのが問題なのでしょうか。 Access側で判断ができないかもしれませんね。 LEFT JOINのクエリーを1本作成すれば解決します。 ただ、INNER JOINの仕方と¥は勉強になりました。 有り難うございました。