1. 论坛系统升级为Xenforo,欢迎大家测试!
    Dismiss Notice

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

Discussion in '后端开发' started by 幸福的百合, Apr 12, 2006.

  1. 幸福的百合

    幸福的百合 New Member

    Joined:
    Apr 11, 2006
    Messages:
    11
    Likes Received:
    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

    Joined:
    Apr 11, 2006
    Messages:
    11
    Likes Received:
    0
    问什么结果一和结果二的格式是这个样子呀,空格都哪去了?

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

    幸福的百合 New Member

    Joined:
    Apr 11, 2006
    Messages:
    11
    Likes Received:
    0

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

    不学无术 Ulysses 的元神

    Joined:
    Aug 31, 2005
    Messages:
    16,714
    Likes Received:
    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 的元神

    Joined:
    Aug 31, 2005
    Messages:
    16,714
    Likes Received:
    39
    由于整数和 NULL 相加,结果还是 NULL ,所以上面的语句得不到期望结果。
     
  6. 不学无术

    不学无术 Ulysses 的元神

    Joined:
    Aug 31, 2005
    Messages:
    16,714
    Likes Received:
    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 的元神

    Joined:
    Aug 31, 2005
    Messages:
    16,714
    Likes Received:
    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;