有没有一种方法可以使用SQL在Microsoft Access中添加/乘以聚合函数?

时间:2018-11-29 17:17:45

标签: sql ms-access aggregate aggregate-functions

我的目标是让Access查询为我做尽可能多的数学运算。有没有一种方法可以添加/多(或以这种方式划分)聚合函数并将输出显示在列中?

示例:

SELECT   
SUM(dbo.tbl1.TYsales) AS TY, SUM(dbo.tbl1.LYsales) AS LY,
SUM(dbo.tbl1.TYsales) + SUM(dbo.tbl1.LYsales) AS [TY_LY], 
SUM(dbo.tbl1.LYsales) + SUM(dbo.tbl1.YBLsales) AS [LY_YBL] ,
SUM(TY_LY)/ SUM(LY_YBL)

我知道这可能还很遥远。我是SQL和Access的新手。

谢谢

1 个答案:

答案 0 :(得分:2)

由于聚合运行在特定级别,因此您需要使用派生表或第二个查询来获取第一个聚合。给定表的基于集合的框架,所有数据库都是如此:

SELECT SUM(TY_LY) / SUM(LY_YBL) AS final_result
FROM 
   (SELECT   
          SUM(dbo_tbl1_TYsales) AS TY, SUM(dbo_tbl1_LYsales) AS LY,
          SUM(dbo_tbl1_TYsales) + SUM(dbo_tbl1_LYsales) AS [TY_LY], 
          SUM(dbo_tbl1_LYsales) + SUM(dbo_tbl1_YBLsales) AS [LY_YBL] ,
    FROM mytable) t

或者有多个查询:

查询1

SELECT SUM(dbo_tbl1_TYsales) AS TY, SUM(dbo_tbl1_LYsales) AS LY,
       SUM(dbo_tbl1_TYsales) + SUM(dbo_tbl1_LYsales) AS [TY_LY], 
       SUM(dbo_tbl1_LYsales) + SUM(dbo_tbl1_YBLsales) AS [LY_YBL]
FROM mytable

查询2

SELECT SUM(TY_LY) / SUM(LY_YBL) AS final_result
FROM Query1

也许,Microsoft Access团队有一天会将JET / ACE SQL方言(〜准ANSI-1989)升级到当前的ANSI标准,并实现CTE(在ANSI-1999中引入),甚至实现窗口功能(在ANSI-1999中引入) 2003)。

注意:以下内容在任何MS Access版本(发布为演示版)中均不会起作用。

WITH cte AS
   (SELECT   
      SUM(dbo_tbl1_TYsales) AS TY, SUM(dbo_tbl1_LYsales) AS LY,
      SUM(dbo_tbl1_TYsales) + SUM(dbo_tbl1_LYsales) AS [TY_LY], 
      SUM(dbo_tbl1_LYsales) + SUM(dbo_tbl1_YBLsales) AS [LY_YBL] ,
    FROM mytable)

SELECT SUM(TY_LY) / SUM(LY_YBL)  AS final_result
FROM cte;