このエラーに関するその他の質問は Access にありますが、私のクエリは Access (2010) で正常に実行されます。
ただし、Excel (2010) から上記のクエリへのデータ接続を開くと、「SELECT ステートメントに予約語が含まれているか、スペルが間違っているか欠落している引数名が含まれているか、句読点が正しくありません。」というメッセージが表示されます。
以下に示すように、最初にネストされた SELECT をWHERE 1 = 0
使用してデータ型を定義することは不可能です。これは、ここに Null があるためです。
これがエラーの原因です。削除すると、Excel は接続できます (2 番目のコード セット)。
ただ、エクセルの予約語として私に飛びつくようなものは見当たりません。
問題の原因となっているコードのスニペット:
SELECT
'A' As Emp
, 1 As [aaa]
, 1 As [bbb]
, 'A' As Definition
, 1 As Month
, 1 As Year
, CCur( 1 ) As costA
, 1 As [ccc]
, 1 As [ddd]
FROM [hereA]
WHERE 1 = 0
エラーのあるクエリの最短バージョン:
SELECT Emp, Sum( [bbb] ) AS theB, Sum( [aaa] ) AS theA, Definition, theMonth, theYear, Sum( costA ) AS costB, Count( [ddd] ) AS [theD], Count( [ccc] ) AS [theC]
FROM (SELECT
'A' As Emp
, 1 As [aaa]
, 1 As [bbb]
, 'A' As Definition
, 1 As Month
, 1 As Year
, CCur( 1 ) As costA
, 1 As [ccc]
, 1 As [ddd]
FROM [hereA]
WHERE 1 = 0
UNION ALL SELECT
[h_A].[emp_a] AS Emp
, Int( 0 ) AS [aaa]
, Int( 1 ) AS [bbb]
, 'Text1' AS Definition
, theMonth( [h_A].[date1] ) AS [Month]
, theYear( [h_A].[date1] ) AS [Year]
, [h_A].[thisCost] AS costA
, NULL AS [ccc]
, [foo].[d network] AS [ddd]
FROM
( [hereA] AS [h_A] LEFT JOIN [thereA]
ON [h_A].[dcr] = [thereA].[dcr]
)
LEFT JOIN [foo]
ON [thereA].[s ball*] = [foo].[s ball]
WHERE ( ( [h_A].[date]>=#1/1/2012# ) AND ( Int( [h_A].[indicator] )=1 ) )
) AS AllowGroupBy
GROUP BY Emp, theMonth, theYear, Definition;