2010-06-01 28 views
0

我在加盟Oracle表有問題,喜的朋友我的表顯示波紋管如何12個表結合了一些不同的,有些相同的字段

table1的樣子

id Name Jan 
7001 Deven 22 
7002 Clause 55 
7004 Monish 11 
7010 Dipesh 55 
7070 Dipika 100 

表2的外觀像

id  Name  Feb 
    7001 Deven  12 
    7002 Clause  15 
    7003 Nimesh  20 
    7004 Monish  21 
    7005 Ritesh  22 

表3的樣子

id  Name  Mar 
    7001 Deven  122 
    7020 Chalse  155 
    7003 Nimesh  88 
    7033 Monica  217 
    7070 Dipika  180 

這樣我有從1月12日表,以月藿我可以結合這一點,並走出放象下面這樣:

id  Name  Jan Feb Mar ...................... Dec 
    7001 Deven  22 12 122 
    7002 Clause 55 15 - .......................- 
    7003 Nimesh -  20 88 .......................2 
    7004 Monish 11 21 - .......................- 
    7005 Ritesh -  22 - .......................20 
    7010 Dipesh 55 - - .......................- 
    7020 Chalse -  - 155 .......................- 
    7033 Monica -  - 217 .......................100 
    7070 Dipika 100 - - .......................- 
+1

你有任何表包含**所有ID ** **? – 2010-06-01 15:43:58

+1

爲什麼你有12張桌子,每個月一桌,而不是一個「月」(或「預訂」)表 – 2010-06-01 15:50:35

回答

2

我會去一個GROUP BY無連接(可能是最有效的,因爲沒有對每個表單通 - GROUP BY子句將重複數據刪除):

select id, name, max(jan) jan, max(feb) feb, /*...*/ max(dec) dec 
    from (select id, name, jan jan, null feb, /*...*/ null dec 
      from table1 
     union all 
     select id, name, null jan, feb feb, /*...*/ null dec 
      from table2 
     union all 
     /*...*/ 
     select id, name, null jan, null feb, /*...*/ dec dec 
      from table12) 
group by id, name 
0

我下面的方法是創建一個包含所有派生表ID和名稱,然後用它們來連接每個表。不像UNION ALLUNION刪除重複我們:

select a.id, a.name, t1.Jan, t2.Feb, t3.Mar 
from (
    select id, name from table1 
    union 
    select id, name from table2 
    union 
    select id, name from table3 
) a 
left outer join table1 t1 on a.id = t1.id 
left outer join table2 t2 on a.id = t2.id 
left outer join table3 t3 on a.id = t3.id 
0

你可能會考慮這些都是一個表列:「編號,姓名,月,數量」(然後甚至一年,如果你要跨越年)。

相關問題