【问题标题】:Query does not include the specified expression as part of an aggregate function in UNION query查询不包含指定表达式作为 UNION 查询中聚合函数的一部分
【发布时间】:2016-04-13 13:47:52
【问题描述】:

我正在执行联合查询以将两个单独查询的结果相加,这两个查询为我提供了来自两个不同会计期间的数据,以获得 12 个月的滚动数字。 我收到消息“您的查询不包括指定的表达式“Report_Header”作为聚合函数的一部分”。我已经读到该字段需要包含在最后的 GROUP BY 语句中,但是当我从任一查询或两个查询中添加字段时,如下所示,我仍然收到消息。帮助?我不是程序员,我是Access用户,所以我需要简单:)。

SELECT [JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].Report_Header,
       Sum([JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].SumOfCASES) AS CASES,
       Sum([JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].SumOfPurchases) AS PURCHASES
FROM [JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB]

UNION ALL

SELECT [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].Report_Header,
       Sum([JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].SumOfCASES) AS CASES,
       Sum([JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].SumOfPurchases) AS PURCHASES
FROM [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2]
GROUP BY [JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].Report_Header,
         [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].Report_Header

谢谢!

【问题讨论】:

  • GROUP BY 仅适用于第二个选择。
  • 我认为你不能直接在 MS Access 中做你想做的事。一种常见的选择是将UNION ALL 放入视图并将其用于聚合。

标签: sql ms-access aggregate-functions


【解决方案1】:

您可以聚合两个子查询:

SELECT [JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].Report_Header,
       Sum([JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].SumOfCASES) AS CASES,
       Sum([JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].SumOfPurchases) AS PURCHASES
FROM [JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB]
GROUP BY [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB].Report_Header

UNION ALL

SELECT [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].Report_Header,
       Sum([JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].SumOfCASES) AS CASES,
       Sum([JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].SumOfPurchases) AS PURCHASES
FROM [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2]
GROUP BY [JOIN_IB_FREIGHT&PURCHASES_Rolling12_SUB2].Report_Header;

这可能是你想要的。但是,它不会在两个表的同一标题下合并信息。为此,最简单的方法可能是视图。

【讨论】:

  • 感谢 Gordon,按照您的说明进行操作,然后我能够对联合查询进行简单查询以组合信息。当您说“最简单的方法可能是视图”时,您的意思是这样吗?
【解决方案2】:

GROUP BY [JOIN_IB_FREIGHT&PURCHASES_ROLLING12_SUB].Report_Header 放在第一个查询而不是第二个查询下方。

【讨论】:

  • 感谢迈克!如果我这样做,我会得到所有标题两次,我想要做的是显示所有标题一次,将第一个查询中的案例添加到第二个查询中的案例中,与购买相同,每个标题项。不过,这对我有用,因为现在所有数据都在一个地方,我现在可以对联合查询进行简单查询以添加它们。谢谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
相关资源
最近更新 更多