я разработал следующий Microsoft Query в ACE.OLEDB:Excel ACE.OLEDB: COUNTIF эквивалент в запросе
SELECT
Name, Country
(SELECT COUNT(*)
FROM Table1 as T1
WHERE Name = T.Name
AND Country = T.Country
AND Description="Work"
GROUP BY Name, Country)/COUNT(*)
FROM
Table1 as T
GROUP BY
Name, Country
Запрос работает нормально, но это длится вечно, чтобы выполнить на более 90K записей в Excel.
Можно ли оптимизировать этот запрос, используя эквивалент COUNTIF
?
Я изображение, запрос может быть оптимизирован, если он работал так:
SELECT
Name, Country,
COUNTIF(CASE WHEN Description="Work" THEN 1 ELSE 0 END)/COUNT(*)
FROM
Table1 as T
GROUP BY
Name, Country
В ответ на предложения, вам случай, когда я попробовал простое доказательство концепции запроса:
SELECT SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END)
FROM (SELECT "Work" as Description)
, и я получаю ошибку Unrecognized keyword WHEN
.
случай, когда, кажется, не работает в MS Query, хотя я знаю, что он работает в T-SQL –
Смотрите мой обновленный пост - я получаю 'Непризнанные ключевое слово WHEN' ошибка –