1

我已经毫无问题地执行了 SQL 中的查询,但它在 Access 中不起作用 Case 在 Access 权限中不可用,所以必须使用 IIf...

select
    sum(case when date between '2012-05-01' AND '2012-06-01' then value else 0 end) as sum1,
    sum(case when date between '2012-05-01' AND '2012-10-01' then value else 0 end) as sum2,
    sum(case when situation like 'Urgent' then 1 else 0 end) as urgent,
    sum(case when situation like 'Anual' then 1 else 0 end) as anual,
    sum(1) as total
from mytable

有没有更好的方法来做到这一点?这个查询会起作用吗?

  select
        sum(IIf date between '2012-05-01' AND '2012-06-01',value,0) as sum1,
        sum(IIf date between '2012-05-01' AND '2012-10-01',value,0) as sum2,
        sum(IIf situation like 'Urgent',1,0 ) as urgent,
        sum(IIf situation like 'Anual' ,1,0 ) as anual,
        sum(1) as total
    from mytable
4

1 回答 1

2

你需要IIf()括号IIf(expression, truepart, falsepart)

datevalue括在方括号中,因为两者都是保留字。

您的Like比较不包括任何模式匹配,所以我=代替了。

我假设日期是日期/时间数据类型,因此用#分隔符将值括起来。

SELECT
    Sum(IIf([date] BETWEEN #2012-05-01# AND #2012-06-01#,[value],0)) AS Sum1,
    Sum(IIf([date] BETWEEN #2012-05-01# AND #2012-10-01#,[value],0)) AS Sum2,
    Sum(IIf(situation = 'Urgent',1,0 )) AS urgent,
    Sum(IIf(situation = 'Anual' ,1,0 )) AS anual,
    Sum(1) AS total
FROM mytable;
于 2012-10-16T17:59:10.610 回答