2016-07-25 50 views
-2

我有一个主表的数据表,可以说TABLE1改变基于另一个表

PLANT  JUNCTION  COST Disct 
LONDON  LD_1   10 1 
LONDON  LD_2   11 2 
LONDON  LD_3   12 5 
SUTHERLAND TE_R10  8 20 
SUTHERLAND TE_R10  8 20 
SUTHERLAND TE_R10  8 20 
SUTHERLAND TE_R11  9 23 
SUTHERLAND TE_R12  10 29 
NY   TE_R8  2 5 
NY   TE_R8  2 5 
NY   TE_R9  11 10 

我有另一个表表2所示:

PLANT   JUNCTION FLATRATE 
SUTHERLAND  TE_R10 0 
NY    TE_R8 10 

我的目的是产生表格如下表1和表格2所示:

PLANT JUNCTION CARRIERCOST Disct 
LONDON  LD_1 10 1 
LONDON  LD_2 11 2 
LONDON  LD_3 12 5 
SUTHERLAND TE_R10 0 20 
SUTHERLAND TE_R10 0 20 
SUTHERLAND TE_R10 0 20 
SUTHERLAND TE_R11 9 23 
SUTHERLAND TE_R12 10 29 
NY   TE_R8 10 5 
NY   TE_R8 10 5 
NY   TE_R9 11 10 

也就是说,如果工厂名称和表格2中的联结名称匹配与表1,然后更新表1的成本,表2

+1

好运的FLATRATE!或者你真的有问题吗? – HoneyBadger

+0

那么,你需要一个新的表格还是只想更新现有的表格?还更新或改变? – Philipp

+0

MySQL,Oracle或两者兼而有之?如果不是两者,请编辑您的帖子并删除不适用的标签。它真的只需要两秒钟。 – mathguy

回答

0

MYSQL

UPDATE T 
SET S.Cost = ISNULL(T.COST,S.Cost) 
FROM Table1 S 
LEFT JOIN Table2 T ON S.PLANT = T.PLANT AND S.PLANT ; 
0

甲骨文

CREATE TABLE table3 
AS 
    SELECT a.plant, a.junction, NVL (b.flatrate, a.cost) carriercost, a.disct 
    FROM table1 a 
    LEFT OUTER JOIN table2 b ON a.plant = b.plant AND a.junction = b.junction