a表
日期     人数
1月1日     2
1月2日     4
1月3日     4b表
日期     人数
1月3日     7
1月2日     8
1月9日     4c表
日期     人数
1月9日     1
1月1日     8
1月5日     6可以联结成这样吗?a日期       a人数      b日期        b人数        c日期       c人数
1月1日        2                                  1月1日        8
1月2日        4        1月2日         8
1月3日        4        1月3日         7
                                                 1月5日        6
                       1月9日         4          1月9日        1
或者这样:日期       a人数      b人数      c人数
1月1日       2                     8
1月2日       4          8          
1月3日       4          7          
1月5日                             6
1月9日                  4          1问abc三表如何全外连接(oracle8i)?很少来了,本来想给多点分的,可是没什么可用分了,多包涵

解决方案 »

  1.   

    怎么不去oracle版问问  :)
      

  2.   

    给出SQL语句就可以了,不强求用oracle8i的语法 :)
      

  3.   


    CREATE TABLE a表
    (
    日期 DATETIME,
    人数 INT
    )
    CREATE TABLE b表
    (
    日期 DATETIME,
    人数 INT
    )
    CREATE TABLE c表
    (
    日期 DATETIME,
    人数 INT
    )INSERT INTO a表
    SELECT '2000-1-1', 2 UNION ALL
    SELECT '2000-1-2', 4 UNION ALL
    SELECT '2000-1-3', 4 INSERT INTO b表
    SELECT '2000-1-3', 7 UNION ALL
    SELECT '2000-1-2', 8 UNION ALL
    SELECT '2000-1-9', 4 INSERT INTO c表
    SELECT '2000-1-9', 1 UNION ALL
    SELECT '2000-1-1', 8 UNION ALL
    SELECT '2000-1-5', 6 SELECT 日期 = CASE WHEN a.日期 IS NOT NULL THEN a.日期 ELSE 
    (CASE WHEN b.日期 IS NOT NULL THEN b.日期 ELSE c.日期 END) END 
    ,a人数 = a.人数, b人数 = b.人数, c人数 = c.人数
    FROM a表 a
    FULL JOIN b表 b ON a.日期 = b.日期
    FULL JOIN c表 c ON a.日期 = c.日期 OR b.日期 = c.日期
    ORDER BY 日期
      

  4.   

    select 日期,sum(decode(表名,'a',人数,0)) a人数,sum(decode(表名,'b',人数,0)) b人数,sum(decode(表名,'c',人数,0)) c人数
    from (
    select 日期,人数,'a' 表名
    from 表A
    union
    select 日期,人数,'b' 表名
    from 表B
    union
    select 日期,人数,'c' 表名
    from 表C
    )
    group by 日期这是典型的UNION加GROUP加DECODE,合并分组用法
    加分吧