Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 在一个查询/表中组合多个列、多个表的总和_Sql_Ms Access - Fatal编程技术网

Sql 在一个查询/表中组合多个列、多个表的总和

Sql 在一个查询/表中组合多个列、多个表的总和,sql,ms-access,Sql,Ms Access,我有四个具有相同字段的表(地理、q1、q2、q3、q4)。我需要找到四个表中每个表的季度总和,并生成一个包含地理信息的新表,表1的总和,表2的总和,表3的总和,表4的总和 我可以单独得到每个总和,但不知道如何将它们合并到一个表中。以下是一个表A的工作代码: SELECT [A].Geography, Sum([A].[q1])+Sum([A].[q2])+Sum([A].[q3])+Sum([A].[q4]) AS TSUM FROM [A] GROUP BY [A].Geogr

我有四个具有相同字段的表(地理、q1、q2、q3、q4)。我需要找到四个表中每个表的季度总和,并生成一个包含地理信息的新表,表1的总和,表2的总和,表3的总和,表4的总和

我可以单独得到每个总和,但不知道如何将它们合并到一个表中。以下是一个表A的工作代码:

SELECT [A].Geography, 
       Sum([A].[q1])+Sum([A].[q2])+Sum([A].[q3])+Sum([A].[q4]) AS TSUM
FROM [A]
GROUP BY [A].Geography
ORDER BY [A].Geography;

只需通过
Geography
连接所有表,检索它们的聚合列和。以下假设所有表中的所有地理位置都相同,表A作为匹配源:

SELECT [A].Geography, 
       Sum([A].[q1])+Sum([A].[q2])+Sum([A].[q3])+Sum([A].[q4]) AS TSUM_A,
       Sum([B].[q1])+Sum([B].[q2])+Sum([B].[q3])+Sum([B].[q4]) AS TSUM_B,
       Sum([C].[q1])+Sum([C].[q2])+Sum([C].[q3])+Sum([C].[q4]) AS TSUM_C,
       Sum([D].[q1])+Sum([D].[q2])+Sum([D].[q3])+Sum([D].[q4]) AS TSUM_D

FROM (([A] 
INNER JOIN [B] ON [A].Geography = [B].Geography) 
INNER JOIN [C] ON [A].Geography = [C].Geography) 
INNER JOIN [D] ON [A].Geography = [D].Geography

GROUP BY [A].Geography
ORDER BY [A].Geography;

地理位置在所有四个表中都是不同的,考虑这个解决方案,使用所有表上所有地理区域的派生表联合查询(<代码>联合< /代码>返回不同的值与代码>联合所有),然后<代码>左联接< /代码>所有表,A-D.当然,这个不同地理记录的派生表可以是一个保存的Access查询,在

FROM
子句的同一位置引用。请注意,在这种方法中,空值将出现在地理位置未出现在特定表中的行中

SELECT main.Geography, 
       Sum([A].[q1])+Sum([A].[q2])+Sum([A].[q3])+Sum([A].[q4]) AS TSUM_A,
       Sum([B].[q1])+Sum([B].[q2])+Sum([B].[q3])+Sum([B].[q4]) AS TSUM_B,
       Sum([C].[q1])+Sum([C].[q2])+Sum([C].[q3])+Sum([C].[q4]) AS TSUM_C,
       Sum([D].[q1])+Sum([D].[q2])+Sum([D].[q3])+Sum([D].[q4]) AS TSUM_D

FROM (((     
       (SELECT Geography FROM A 
        UNION SELECT Geography FROM B 
        UNION SELECT Geography FROM C
        UNION SELECT Geography FROM D) As main

LEFT JOIN [A] ON [main].Geography = [A].Geography)
LEFT JOIN [B] ON [main].Geography = [B].Geography) 
LEFT JOIN [C] ON [main].Geography = [C].Geography) 
LEFT JOIN [D] ON [main].Geography = [D].Geography

GROUP BY [main].Geography
ORDER BY [main].Geography;

注意处理连接子句周围的括号,因为MS Access SQL需要这些括号。

您有可用地理位置表吗?否则,在MS Access中执行此操作相当痛苦(通常需要一个辅助视图或临时表)。它会有可能的地理位置吗?我该如何处理该表?在最终的结果集中,您希望一行有五列,一行有十七列,还是四行有五列?五列,原始表中每个地理位置一行,每个地理位置一列,好的。但是其他4列,会有什么信息?第一季度、第二季度、第三季度、第四季度?或荃湾(甲)、荃湾(乙)、荃湾(丙)、荃湾(丁)?请添加一些数据样本和预期结果。并将列命名为“感谢您的回复!”!从理论上讲,这是有道理的,看起来不错,但当我运行它时(第二个选项,因为地理位置不同),我会遇到溢出错误。我假设代码有问题,因为每个表大约有1500条记录,这应该不会太多(新的访问,所以我可能会错),我在MS access中测试了这一点。如前所述,尝试创建一个单独的联合查询,并在
FROM
子句中使用它。此外,地理信息是短文本还是长文本(即备注字段)。如果是后者,则不应在这种无限长字段上使用联接。您是否有
geographyid
可用?
SELECT[main].Geography FROM((((从[假定索赔]选择地理位置]从[Claims Cedded]联合选择地理位置]从[Premium Cedded]联合选择地理位置)作为[main]上的主左连接[Claims Suspedded]。地理=[Claims Successed]。地理位置)在[main]上左连接[Claims Cedded]。地理位置=[Claims Cedded]。地理位置)在[main]上左连接[Premium Successed]。地理位置=[Premium Cedded]。地理位置分组依据[main]。地理位置顺序依据[main].Geography;
很抱歉格式太糟糕了,但是字符限制:(.这是我做的子查询。当我在主查询中调用它时,它不起作用。我得到一个“[假设索赔]。q1可能引用了查询中列出的多个表”该列不在上面的查询中。请随意编辑您的原始帖子而不是评论来编写查询。