2015-06-09 32 views
1

我制定了以下Microsoft查询在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错误。

+0

CASE WHEN似乎并不在MS查询工作,虽然我知道它在T-SQL –

+0

看到我更新后 - 我得到'无法识别的关键字WHEN'错误 –

回答

1

伯爵只会计数的东西。你应该做一个SUM

SUM(CASE WHEN Description="Work" THEN 1 ELSE 0 END) 

如果实在不行,它总结为0,否则1

你的标签看多,你提到的Excel。您可能需要将其更改为

SUM(IIF(Description="Work", 1, 0)) 
+0

见我的更新后 - 我得到'无法识别的关键字WHEN'错误 –

+0

@ AnalystCave.com,通过Excel修改IF()语句供您试用。 – DRapp

+0

我想你错过了那里的一个'我'。该函数是'Iif'。是的这个作品感谢提醒我:)完全忘了这一点。进行更正,我将标记为答案 –