两张表中相同的字段相加,该怎么处理
两张表中相同的字段相加
第1张表,表名:a
time 编号 容量 台数 次数 数量
2011-06 杭州 12 21 13 14
2011-06 丽水 15 16 17 18
2011-07 杭州 19 20 23 24
2011-07 丽水 25 26 27 28
第2张表,表名:b
time 编号 容量 台数
2011-06 杭州 12 21
2011-06 丽水 15 16
2011-07 杭州 19 20
2011-07 丽水 25 26
我想得到的结果,第一张表+第2张表中相同的字段,没有的保留,结果存在第三张表:C中 结果如下,最好可以写个VIEW
time 编号 容量 台数 次数 数量
2011-06 杭州 24 42 13 14
2011-06 丽水 30 32 17 18
2011-07 杭州 38 40 23 24
2011-07 丽水 50 52 27 28
------解决方案--------------------
------解决方案--------------------
第1张表,表名:a
time 编号 容量 台数 次数 数量
2011-06 杭州 12 21 13 14
2011-06 丽水 15 16 17 18
2011-07 杭州 19 20 23 24
2011-07 丽水 25 26 27 28
第2张表,表名:b
time 编号 容量 台数
2011-06 杭州 12 21
2011-06 丽水 15 16
2011-07 杭州 19 20
2011-07 丽水 25 26
我想得到的结果,第一张表+第2张表中相同的字段,没有的保留,结果存在第三张表:C中 结果如下,最好可以写个VIEW
time 编号 容量 台数 次数 数量
2011-06 杭州 24 42 13 14
2011-06 丽水 30 32 17 18
2011-07 杭州 38 40 23 24
2011-07 丽水 50 52 27 28
------解决方案--------------------
select nvl(a.time, b.time) as time,
nvl(a.编号, b.编号) as "编号",
nvl(a.容量, 0) + nvl(b.容量, 0) as "容量",
nvl(a.台数, 0) + nvl(b.台数, 0) as "台数",
nvl(a.次数, b.次数) as "次数",
nvl(a.数量, b.数量) as "数量"
from a full join b
on a.time = b.time
and a.编号 = b.编号;
------解决方案--------------------
select time,编号,sum(容量) 容量,sum(台数) 台数,sum(次数) 次数,sum(数量) 数量
from
(
select time,编号,容量,台数,次数,数量 from a
union all
select time,编号,容量,台数,0 次数,0 数量 from b
)
group by time,编号