Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有一种方法可以使用SQL在Microsoft Access中添加/乘以聚合函数?_Sql_Ms Access_Aggregate_Aggregate Functions - Fatal编程技术网

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

是否有一种方法可以使用SQL在Microsoft Access中添加/乘以聚合函数?,sql,ms-access,aggregate,aggregate-functions,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

我的目标是让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


谢谢

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

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

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

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


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

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

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

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


这几乎可以奏效。如果不再次执行聚合或使用子查询,通常无法在同一查询中再次引用计算字段。这几乎可以正常工作。如果不再次执行聚合或使用子查询,您通常无法在同一查询中再次引用计算字段。这更有意义,因为我习惯于使用更多面向对象的编程,在SQL中分配值时会迷失方向。非常感谢你的帮助!这更有意义,因为我习惯于使用更多面向对象的编程,在SQL中赋值时,我就不知所措了。非常感谢你的帮助!