我的目标是让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的新手。
谢谢
答案 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;