Excel ACE.OLEDB: 查询中的 COUNTIF 等价物
Excel ACE.OLEDB: COUNTIF equivalent in query
我在 ACE.OLEDB 中开发了以下 Microsoft Query:
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
查询工作正常,但它会永远持续执行 Excel 中超过 90k 条记录。
是否可以使用 COUNTIF
等效项来优化此查询?
我想查询可以优化,如果它像这样工作的话:
SELECT
Name, Country,
COUNTIF(CASE WHEN Description="Work" THEN 1 ELSE 0 END) / COUNT(*)
FROM
Table1 as T
GROUP BY
Name, Country
为了回复给你的CASE WHEN建议,我尝试了一个简单的概念验证查询:
SELECT SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END)
FROM (SELECT "Work" as Description)
我收到 Unrecognized keyword WHEN
错误。
Count 只会数东西。你应该做一个 SUM
SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END)
如果不起作用,则求和为 0,否则为 1。
仔细查看您的标签,您提到了 Excel。您可能需要将其更改为
SUM( IIF( Description="Work", 1, 0) )
我在 ACE.OLEDB 中开发了以下 Microsoft Query:
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
查询工作正常,但它会永远持续执行 Excel 中超过 90k 条记录。
是否可以使用 COUNTIF
等效项来优化此查询?
我想查询可以优化,如果它像这样工作的话:
SELECT
Name, Country,
COUNTIF(CASE WHEN Description="Work" THEN 1 ELSE 0 END) / COUNT(*)
FROM
Table1 as T
GROUP BY
Name, Country
为了回复给你的CASE WHEN建议,我尝试了一个简单的概念验证查询:
SELECT SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END)
FROM (SELECT "Work" as Description)
我收到 Unrecognized keyword WHEN
错误。
Count 只会数东西。你应该做一个 SUM
SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END)
如果不起作用,则求和为 0,否则为 1。
仔细查看您的标签,您提到了 Excel。您可能需要将其更改为
SUM( IIF( Description="Work", 1, 0) )