select t1.name,isnull(t1.date,t2.date) as date,t2.out,t1,sale
 from 表一 t1,表二 t2 
 where t1.name*=t2.name我没调试,你试一下大体的思路是通过外连接,并且判断t1.date是否为空,如果为空用t2.date的日期代替

解决方案 »

  1.   

    create table table1(
    name nvarchar(10),
    [date] datetime,
    sale int
    )create table table2(
    name nvarchar(10),
    [date] datetime,
    out int
    )
    insert table1
    select '白钢刀' ,' 2003-12-29',    0
    union
    select '光介子', ' 2003-12-30',    20
    insert table2
    select '白钢刀' , '2003-12-29' ,   21
    union
    select '螺母',    '2003-12-29',    21
    union
    select '螺母2',  ' 2003-12-29 ',   22
    select name,date,sum(sale),sum(out) from 
    (select name,date,sale,0 out from table1
    union
    select name,date,'',out from table2) a
    group by name ,date
    ame       date                                                                           
    ---------- ------------------------------------------------------ ----------- ----------- 
    白钢刀        2003-12-29 00:00:00.000                                0           21
    螺母         2003-12-29 00:00:00.000                                0           21
    螺母2        2003-12-29 00:00:00.000                                0           22
    光介子        2003-12-30 00:00:00.000                                20          0(4 row(s) affected)可以么??
      

  2.   

    select t1.name,isnull(t1.date,t2.date) as date,t2.out,t1,sale
     from 表一 t1 full join 表二 t2 
     on t1.name=t2.name
      

  3.   

    haozhangpk(步惊云) 的錯了
    可使用;
    select name,date,sum(sale),sum(out) from 
    (select name,date,sale,0 out from table1
    union
    select name,date,'',out from table2) a
    group by name ,date
      

  4.   

    用聯接變成笛卡兒集,可使用union,然後 group 聚合