还是这个问题,不知道这样各们高手们是否能看懂了。 现有三个表如下: 表1 表2 TYPE 一检 二检 TYPE 一检 二检 A 1 1 A 2 1 B 2 2 C 2 1 C 3 3 D 2 1 A 4 4 D 2 1 D 5 5 A 2 1 表3 TYPE 一检 二检 B 1 4 B 2 4 A 3 4 C 4 6 C 5 1 用SQL进行汇总统计以下结果(GROUP BY语名): 结果一、TYPE 一检 二检 A 11 13 B 5 10 C 14 10 D 9 7 上面是多个表汇总。单个表是:select type,sum(一检)as一检,sum(二检)as二检 from 表一 group by type 如果是多个表语名应怎么写呀? 结果二、TYPE 表一.一检 表二.一检 表三.一检 A 5 4 3 B 2 0 3 C 3 2 9 D 5 4 0 结果二是多个表分别汇总用SQL语句应怎么写呀?
现在遇到的一个问题是 Sum 函数返回没有对应记录的结果为 NULL 而不是 0,不知道如何解决。 两条 SQL 分别类似于: SELECT 表1.Type, (Sum(表1.一检) + (SELECT Sum(表2.一检) FROM 表2 WHERE 表1.Type = 表2.Type) + (SELECT Sum(表3.一检) FROM 表3 WHERE 表1.Type = 表3.Type)) AS 一检, (Sum(表1.二检) + (SELECT Sum(表2.二检) FROM 表2 WHERE 表1.Type = 表2.Type) + (SELECT Sum(表3.二检) FROM 表3 WHERE 表1.Type = 表3.Type)) AS 二检 FROM 表1 GROUP BY 表1.Type; SELECT 表1.Type, Sum(表1.一检) AS 一一, (SELECT Sum(表2.一检) FROM 表2 WHERE 表1.Type = 表2.Type) AS 二一, (SELECT Sum(表3.一检) FROM 表3 WHERE 表1.Type = 表3.Type) AS 三一 FROM 表1 GROUP BY 表1.Type;
第二个结果的: SELECT 表1.Type, IIF(IsNull(Sum(表1.一检)), 0, Sum(表1.一检)) AS 表一一检, IIF(IsNull((SELECT Sum(表2.一检) FROM 表2 WHERE 表1.Type = 表2.Type)), 0, (SELECT Sum(表2.一检) FROM 表2 WHERE 表1.Type = 表2.Type)) AS 表二一检, IIF(IsNull((SELECT Sum(表3.一检) FROM 表3 WHERE 表1.Type = 表3.Type)), 0, (SELECT Sum(表3.一检) FROM 表3 WHERE 表1.Type = 表3.Type)) AS 表三一检 FROM 表1 GROUP BY 表1.Type;
第一个结果的: SELECT 表1.Type, (IIF(IsNull(Sum(表1.一检)), 0, Sum(表1.一检)) + IIF(IsNull((SELECT Sum(表2.一检) FROM 表2 WHERE 表1.Type = 表2.Type)), 0, (SELECT Sum(表2.一检) FROM 表2 WHERE 表1.Type = 表2.Type)) + IIF(IsNull((SELECT Sum(表3.一检) FROM 表3 WHERE 表1.Type = 表3.Type)), 0, (SELECT Sum(表3.一检) FROM 表3 WHERE 表1.Type = 表3.Type))) AS 一检, (IIF(IsNull(Sum(表1.二检)), 0, Sum(表1.二检)) + IIF(IsNull((SELECT Sum(表2.二检) FROM 表2 WHERE 表1.Type = 表2.Type)), 0, (SELECT Sum(表2.二检) FROM 表2 WHERE 表1.Type = 表2.Type)) + IIF(IsNull((SELECT Sum(表3.二检) FROM 表3 WHERE 表1.Type = 表3.Type)), 0, (SELECT Sum(表3.二检) FROM 表3 WHERE 表1.Type = 表3.Type))) AS 二检 FROM 表1 GROUP BY 表1.Type;