【问题标题】:Aggregate function in MS Access causing errorMS Access 中的聚合函数导致错误
【发布时间】:2013-12-11 23:41:04
【问题描述】:

我有一个这样的 SQL 查询:

SELECT Month(mimos.mimo_date) & "-" & Year(mimos.mimo_date) AS monthyear, 
       Sum(Iif(mimos.amount < 0, mimos.amount, 0))          AS debits, 
       Sum(Iif(mimos.amount > 0, mimos.amount, 0))          AS credits 
FROM   mimos 
GROUP  BY monthyear, 
          debits, 
          credits; 

这会引发错误:

您尝试执行的查询不包含指定的 表达式 ... 作为聚合函数的一部分。 (错误 3122)

尽管进行了广泛的谷歌搜索,我似乎无法解决这个问题。有人有解决办法吗?

【问题讨论】:

  • 如果有东西在访问中?
  • 实际上是iif。 Beautifier 大写
  • 考虑使用Format() 构建monthyear ... Format(mimos.mimo_date, 'mm-yyyy') AS monthyear
  • @HansUp 很棒的建议

标签: sql ms-access


【解决方案1】:

试试这个方法:

SELECT Month(mimos.mimo_date) & "-" & Year(mimos.mimo_date) AS monthyear, 
       Sum(Iif(mimos.amount < 0, mimos.amount, 0))          AS debits, 
       Sum(Iif(mimos.amount > 0, mimos.amount, 0))          AS credits 
FROM   mimos 
GROUP  BY Month(mimos.mimo_date) & "-" & Year(mimos.mimo_date);

您只需要聚合不使用聚合函数的内容。而且您不能在同一查询中使用别名作为字段。

【讨论】:

    【解决方案2】:

    我相信问题在于别名尚未确定范围。一种方法是:

    SELECT *
    FROM (
        SELECT Month(mimos.mimo_date) & "-" & Year(mimos.mimo_date) AS monthyear, 
           Sum(Iif(mimos.amount < 0, mimos.amount, 0))          AS debits, 
           Sum(Iif(mimos.amount > 0, mimos.amount, 0))          AS credits 
    ) q
    GROUP  BY monthyear, 
              debits, 
              credits; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多