Я использую ADO для запуска SQL в excel.Ошибка SQL UNION ALL
У меня есть 7 таблиц в книге Excel: 2014,2015,2016,2017,2018,2019,2020
Теперь, 2014 и 2015 были заполнены 0,2016 данные были заполнить данные в два раза.
2017,2018, 2019,2020 нет данных внутри, сегодня по-прежнему 2016.
Затем я использую from ...[$2014] UNION ALL from ...[$2014] UNION ALL from ...[$2015] UNION ALL from ...[$2016]....UNION ALL from ...[$2020]
соединить все таблицы
Позже я обнаружил, что, когда я смотрю на информацию 2016 года , статистика совершенно неверна. Я долго отлаживаю. Затем выясняю, что проблема заключается в том, что у 2017-2020 нет данных. Я добавляю одну фальшивую строку в 2017-2020 годах соответственно, чтобы проблема была решена.
Но это досадно, что поддельный ряд необходимо добавить в 2017-2020 годах.
Следовательно, любые предложения могут полностью решить вопрос?
SQL(завернутые в строку VBA):
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
Вы можете построить 'от' часть динамически в цикле, который проходит через все существующие рабочие таблицы в Excel файл – cha
@cha Но это в SQL заявление .а можно запустить цикл VBA в SQL заявление? – evabb
Нет, я предложил запустить цикл в VBA при построении SQL-запроса – cha