第一个表
日期          购入
2007-07-02    1000
2007-07-04    2000
2007-07-06    3000
2007-07-08    5000
2007-07-10    8000
第二个表
日期          充值
2007-07-01    1000
2007-07-03    2000
2007-07-05    3000
2007-07-09    5000
2007-07-11    8000
第三个表
日期          联通
2007-07-01    1000
2007-07-02    2000
2007-07-03    3000
2007-07-04    5000
2007-07-05    8000
第四个表
日期          移动
2007-07-01    1000
2007-07-02    2000
2007-07-03    3000
2007-07-04    5000
2007-07-05    8000
第五个表
日期          电信
2007-07-02    1000
2007-07-04    2000
2007-07-06    3000
2007-07-08    5000
2007-07-09    8000合并成一个SELECT 查询 日期没有记录为0
日期         购入   充值    联通   移动  电信
2007-07-01    0     1000    1000   1000    0
2007-07-02   1000    0      2000   2000    1000

解决方案 »

  1.   

    select a.日期,isnull(a.购入,0),isnull(b.充值,0),isnull(c.联通,0),isnull(d.移动,0),isnull(e.电信,0)
    from 第一个表 a  full join 第二个表 b on a.日期=b.日期
    full join 第三个表 c on a.日期=c.日期
    full join 第四个表 d on a.日期=d.日期
    full join 第五个表 e on a.日期=e.日期
      

  2.   

    select 日期,
    min(Case When 购入 is not null Then value else 0 End) As 购入,
    min(Case When 充值 is not null Then value else 0 End) As 充值,
    min(Case When 联通 is not null Then value else 0 End) As 联通,
    min(Case When 移动 is not null Then value else 0 End) As 移动,
    min(Case When 电信 is not null Then value else 0 End) As 电信
    from
    第一个表 inner join 第二个表 on 日期=日期
    inner join 第三个表 on 日期=日期
    inner join 第四个表 on 日期=日期
    inner join 第五个表 on 日期=日期
      

  3.   

    比如说 a.日期=e.日期 但a.日期里有2007-07-04 在e.日期的日期里没有 则不显示2007-07-04日期
      

  4.   

    select a.日期,a.购入,b.充值,isnull(c.联通,0),isnull(d.移动,0),isnull(e.电信,0)
    from 第一个表 a 
    inner join 第二个表 b 
    on a.日期=b.日期
    inner join 第三个表 c 
    on a.日期=c.日期
    inner join 第四个表 d 
    on a.日期=d.日期
    inner join 第五个表 e 
    on a.日期=e.日期
    where a.购入 is not null and b.充值 is not null
      

  5.   

    isnull(columns,0) 用0代替columns为空的值
      

  6.   

    leo_lesley(leo) 
    buxiangwei(一点一点进步) 
    zy_andrew()a.日期=c.日期
    如果日期不一样的 记录就不显示
      

  7.   

    create table 第一个表(日期 datetime,购入 int)
    insert 第一个表
    select '2007-07-02',1000
    union select '2007-07-04',    2000
    union select '2007-07-06',    3000
    union select '2007-07-08',    5000
    union select '2007-07-10',    8000
    create table 第二个表(日期 datetime,充值 int)
    insert 第二个表
    select '2007-07-01',    1000
    union select '2007-07-03',    2000
    union select '2007-07-05',    3000
    union select '2007-07-09',    5000
    union select '2007-07-11',    8000
    create table 第三个表(日期 datetime,联通 int)
    insert 第三个表
    select '2007-07-01',    1000
    union select '2007-07-02',    2000
    union select '2007-07-03',    3000
    union select '2007-07-04',    5000
    union select '2007-07-05',    8000
    create table 第四个表(日期 datetime,移动 int)
    insert 第四个表
    select '2007-07-01',    1000
    union select '2007-07-02',    2000
    union select '2007-07-03',    3000
    union select '2007-07-04',    5000
    union select '2007-07-05',    8000
    create table 第五个表(日期 datetime,电信 int)
    insert 第五个表
    select '2007-07-02',   1000
    union select '2007-07-04',    2000
    union select '2007-07-06',    3000
    union select '2007-07-08',    5000
    union select '2007-07-09',    8000select  日期=isnull(isnull(isnull(isnull(a.日期,b.日期),c.日期),d.日期),e.日期),
    购入=isnull(max(a.购入),0),
    充值=isnull(max(b.充值),0),
    联通=isnull(max(c.联通),0),
    移动=isnull(max(d.移动),0),
    电信=isnull(max(e.电信),0)
    from  第一个表 a  full join 第二个表 b on a.日期=b.日期
    full join 第三个表 c on a.日期=c.日期
    full join 第四个表 d on a.日期=d.日期
    full join 第五个表 e on a.日期=e.日期
    group by isnull(isnull(isnull(isnull(a.日期,b.日期),c.日期),d.日期),e.日期)
    order by 日期drop table 第一个表,第二个表,第三个表,第四个表,第五个表
      

  8.   

    加下这个就可以isnull(isnull(isnull(isnull(a.日期,b.日期),c.日期),d.日期),e.日期),