两个表t1,t2; t1 ,t2都有name,jlsl,wcsl三个字段;t1表内容是 name jlsl wcsl dianyuan 15 24
xianka 34 23
xianshiqi 24 20
jianpan 45 24
t2表内容是 name jlsl wcsl
dianyuan 12 12
xianka 11 4怎么写sql语句? 将两个表name相同的对应列进行相减 把两表name不同的列 直接列出即可 .也就是最后结果列出两个表中所有物料 有相同名称的相减 没有相同名称的直接列出对应数值即可.
xianka 34 23
xianshiqi 24 20
jianpan 45 24
t2表内容是 name jlsl wcsl
dianyuan 12 12
xianka 11 4怎么写sql语句? 将两个表name相同的对应列进行相减 把两表name不同的列 直接列出即可 .也就是最后结果列出两个表中所有物料 有相同名称的相减 没有相同名称的直接列出对应数值即可.
a.jlsl-isnull(b.jlsl,0) jlsl,
a.wcsl-isnull(b.wcsl,0) wcsl
from t1 a
left join t2 b
on a.name=b.name
select a.name,abs(a.jlsl-b.jlsl) jlsl,abs(a.wcsl-b.wcsl) wcsl from t1 a
left join t2 b where a.name=b.name
abs 是取绝对值,就不会有负数啦,
如果楼主需要有负数,去掉就ok啦祝楼主好运!
select A.name,jlsl = (isnull(A.jlsl,0) + isnull(B.jlsl,0)), wcsl = (isnull(A.wcsl,0) + isnull(B.wcsl,0))
from t1 A left join t2 B on A.name = b.name
--2. 通用些
select A.name,jlsl = sum(A.jlsl), wcsl = sum(A.wcsl)from
(
select name,jlsl, wcsl from t1
union
select name,jlsl, wcsl from t2
)A
group by A.name
from t1 A left join t2 B on A.name = b.name