2014-12-03 71 views
0

我正在使用Oracle SQL。我有3個表,其中包括每個80列具有相同的列名稱。我想將表格加入到一個新表格中,但由於命名重複,我應該得到一個錯誤。Oracle SQL列命名

我不要重命名240列。還有其他解決方案嗎?

這裏是我的表:

T1

c1 int, 
c2 int, 
.. 
.. 
.. 
c80 int 

T2

c1 int, 
c2 int, 
.. 
.. 
.. 
c80 int 

T3

c1 int, 
c2 int, 
.. 
.. 
.. 
c80 int 

這裏是我的加盟:

Create table NewTable as 
select * 
from T1 
    inner join T2 
     on T1.id = T2.id 
    inner join T3 
     on T1.id = T3.id 

是否有諸如問題的任何解決方案?例如 - 顯示包含表名稱(t1.c1,t1.c2 ...)的完整列名稱。

+0

用明確的table.column名稱替換通配符並使用別名。 – OldProgrammer 2014-12-03 17:23:10

+0

t3.id = t3.id是可疑的。由於oracle通常並不關心重複的列名稱,所以它會追加#s,但是通常會添加下一個數字t2.c1變成t2.c11,但t1.c11已經存在......可能是問題......在沒有重命名列或使用動態SQL視圖或cte的情況下,如果您仍想執行select * – xQbert 2014-12-03 17:23:47

+0

,我認爲您運氣不佳。「t3.id = t3.id」是一個錯字。我修好了它。無論如何,我收到「重複列名錯誤」。表名前綴未被追加。 – Omri 2014-12-03 17:26:57

回答

0

類似:

選擇T1.c1的,T1.c2,T2.C1爲C1_T2,T2.c2作爲c2_T2

等 應該工作。

編輯: 或者,也許你想聯合記錄到一個表。如果需要區分它們,可能會有一個額外的列描述記錄的來源。

+0

我有240列。您的解決方案不適合諸如列數量。 – Omri 2014-12-03 17:25:41

+3

你沒有任何其他機會。如果您不想輸入的是手動輸入 – ibre5041 2014-12-03 17:37:41

+0

,請在您最喜歡的編輯器中使用宏首先,您爲什麼要加入所有表格的所有列?似乎是一個設計問題。 – 2014-12-03 17:52:48