表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语句怎么实现啊?
姓名 消费额
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语句怎么实现啊?
FROM 表1 FULL JOIN 表2 ON 表1.姓名=表2.姓名
from 表1,表2
where 表1.姓名=表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.姓名
from tab1
full join tab2 on tab1.name=tab2.name
FROM 表1 FULL JOIN 表2 ON 表1.姓名=表2.姓名
from 表1 full join 表2 on 表1.姓名=表2.姓名
from tab1
full join tab2 on tab1.name=tab2.name
測試過了
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.姓名
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 姓名
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
*/
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 姓名