表1
姓名  消费额
A      110
B      120
C      130表2
姓名  消费额
B      140
C      150
D      160
E      170
F      180
查询后需要得到下面的结果,上两个表合成一个有本期和历史消费记录的表
姓名   历史消费    本期消费
A      110          0
B      120          140
C      130          150
D       0           160
E       0           170
F       0           180
用sql语句怎么实现啊?

解决方案 »

  1.   

    SELECT 表1.姓名, 表1. 历史消费, 表2. 本期消费
    FROM 表1 FULL JOIN 表2 ON 表1.姓名=表2.姓名
      

  2.   

    SELECT 表1.姓名, 表1.消费额 as 历史消费, 表2.消费额 as 本期消费 
    from 表1,表2
    where 表1.姓名=表2.姓名
      

  3.   

    SELECT 表1.姓名, isnull(表1. 历史消费,0), isnull(表2. 本期消费) 
    FROM 表1 , 表2 
    where
     表1.姓名*= 表2.姓名 或者SELECT 表1.姓名, case when 表1. 历史消费 = null then 0 eles 表1. 历史消费 end, 
    case when 表2. 本期消费 = null then 0  eles  表1. 历史消费 end
    FROM 表1 , 表2 
    where
     表1.姓名*= 表2.姓名 
      

  4.   

    select , as select isnull(tab1.name,tab2.name)  as 姓名,isnull(tab1.code,0) as '消費額',isnull(tab2.code,0) as '歷史消費'
    from tab1
    full join tab2 on tab1.name=tab2.name
      

  5.   

    简单看下,感觉1楼的方法不知道那些没数据的会不会显示0改了下SELECT 表1.姓名, isnull(表1. 历史消费,'0'), isnull(表2. 本期消费 ,'0') 
    FROM 表1 FULL JOIN 表2 ON 表1.姓名=表2.姓名 
      

  6.   

    select 表1.姓名,isnull(表1.消费额,0) 历史消费,isnull(表2.消费额,0) 本期消费
    from 表1 full join 表2 on 表1.姓名=表2.姓名
      

  7.   

    select isnull(tab1.name,tab2.name)  as '姓名',isnull(tab1.code,0) as '消費額',isnull(tab2.code,0) as '歷史消費' 
    from tab1 
    full join tab2 on tab1.name=tab2.name 
    測試過了
      

  8.   

    select * from A  union select * from B
      

  9.   

    select  distinct T.姓名,isnull( A.消费额,'')  as '历史消费' , isnull(b.消费额, '0') AS '本期消费'
    from 
    (select distinct  A.姓名 
    from Table_1 As A  
    union
    select distinct  B.姓名 
    from Table_2 AS B) AS T
    left join  Table_1 As A   on T.姓名 = A.姓名 
    left join  Table_2 AS B  on T.姓名 = b.姓名 
      

  10.   


    select  (select isnull(tab1.姓名,tab2.姓名))  as 姓名,isnull(tab1.消费额,0) as '消费额',isnull(tab2.消费额,0) as '历史消费'
    from 表1 tab1 
    full join 表2 tab2 on tab1.姓名=tab2.姓名 order by 姓名
      

  11.   

    declare @t1 table(姓名 char(2),消费额 numeric(12,2))
    insert @t1 select 'A',110
    union all select 'B',120
    union all select 'C',130declare @t2 table(姓名 char(2),消费额 numeric(12,2))
    insert @t2 select 'B',140
    union all select 'C',150
    union all select 'D',160
    union all select 'E',170
    union all select 'F',180select 姓名=a.姓名,历史消费=isnull(a.消费额,0),本期消费=isnull(b.消费额,0)
    from @t1 a left join @t2 b on a.姓名=b.姓名
    union 
    select 姓名,0,消费额
    from @t2
    where 姓名 not in(select 姓名 from @t1)/*
    姓名   历史消费           本期消费           
    ---- -------------- -------------- 
    A    110.00         .00
    B    120.00         140.00
    C    130.00         150.00
    D    .00            160.00
    E    .00            170.00
    F    .00            180.00
    */
      

  12.   


    select  (select isnull(tab1.姓名,tab2.姓名))  as 姓名,isnull(tab1.消费额,0) as '历史消费'    ,isnull(tab2.消费额,0) as '本期消费'
    from 表1 tab1 
    full join 表2 tab2 on tab1.姓名=tab2.姓名 order by 姓名