私はADOを使用してExcelをSQLで実行します。 2014,2015,2016,2017,2018,2019,2020SQL UNION ALLエラー
さて、2014年と2015年には満たされているデータの0.2016が半分にデータを記入されています:
は、私は、Excelブックの7つのテーブルを持っています。今日はまだ2016年
あるとして内部で
2017,2018、2019,2020は私が2016年については、ルックアップするときことがわかり、私は
後にすべてのテーブルを結合するためにfrom ...[$2014] UNION ALL from ...[$2014] UNION ALL from ...[$2015] UNION ALL from ...[$2016]....UNION ALL from ...[$2020]
を使用し、その後、データがありません統計は完全に間違っています。私は長い間デバッグしています.2017年から2020年にはデータがないという問題を発見しました。2017-2020年にそれぞれ1つの偽の行を追加して問題を解決しました。
しかし、2017-2020年に偽の行を追加する必要があります。
したがって、どのような提案でも問題は完全に解決できますか? (VBA文字列に包まれた)
SQL:
SELECT officer, NULL,
SUM(IIF(isnumeric(mkt) = true AND Survey='CPI' AND Activity='FI' AND Outcome= 'C',
Totalmin, 0)/468),
SUM(IIF(isnumeric(Non) = true AND Survey='CPI' AND Activity='FI' AND Outcome= 'C',
Totalmin, 0)/468),
NULL, NULL,
IIF(ISNULL(SUM(mkt)), 0, SUM(mkt)),
Sum(Non), SUM(ICP), (SUM(mkt) + SUM(Non) + SUM(ICP)),
NULL, NULL, NULL,
COUNT(IIF(Survey='CPI' AND Activity='FI',
Totalmin, NULL)),
NULL,
COUNT(IIF(Survey='CPI' AND Activity='FI' AND
(Outcome ='C' OR Outcome='D'OR Outcome='O'), Totalmin, NULL)),
NULL,
SUM(IIF(Survey='CPI' AND Activity='FI',Totalmin, 0)),
NULL,
SUM(IIF(Survey='CPI' AND Activity='FI' AND
(Outcome ='C' OR Outcome='D'), Totalmin, 0))
FROM (SELECT officer, rank, year, month, day, survey, activity,
outcome, mkt, non, totalmin, ICP, tabledate FROM [2014$]
UNION ALL SELECT officer, rank, year, month, day, survey, activity,
outcome, mkt, non, totalmin, ICP, tabledate FROM [2015$]
UNION ALL SELECT officer, rank, year, month, day, survey, activity,
outcome, mkt, non, totalmin, ICP, tabledate FROM [2016$]) as table3
WHERE officer IS NOT NULL
AND officer <> '' AND officer <> ' '
AND tabledate >= # " & frommDate & "#
AND tabledate < # " & tooDate & " #
GROUP BY officer
あなたは、SQL文でVBAのループを実行することを可能.Is – cha
@chaをExcelファイル内のすべての既存のワークシートを通過する。しかし、それはSQL文であるループ内で動的に 'FROM'部分を構築することができますか? – evabb
いいえ、SQLステートメント – cha