1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

急急急!!!大家还得帮帮忙!!万分感激!!!

本帖由 幸福的百合2006-04-12 发布。版面名称:后端开发

  1. 幸福的百合

    幸福的百合 New Member

    注册:
    2006-04-11
    帖子:
    11
    赞:
    0
    还是这个问题,不知道这样各们高手们是否能看懂了。

    现有三个表如下:
       表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语句应怎么写呀?
     
  2. 幸福的百合

    幸福的百合 New Member

    注册:
    2006-04-11
    帖子:
    11
    赞:
    0
    问什么结果一和结果二的格式是这个样子呀,空格都哪去了?

    各位凑和看吧,就是TYPE下列对应着A,B,C,D。然后依次相互对应着
     
  3. 幸福的百合

    幸福的百合 New Member

    注册:
    2006-04-11
    帖子:
    11
    赞:
    0

    是为什么,不是问什么!太紧张了,不好意思啊!:p :ft:
     
  4. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    现在遇到的一个问题是 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;
     
  5. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    由于整数和 NULL 相加,结果还是 NULL ,所以上面的语句得不到期望结果。
     
  6. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    第二个结果的:

    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;
     
  7. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    第一个结果的:

    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;