2014-09-19 67 views
0

我有两个表看起来像:甲骨文UNION不同列

TABLE_1 
COL_A (int), COL_B (float), COL_C (float) 


TABLE_2 
COL_A (int), COL_B (float) 

我的查询使用UNION把这些表的结果放在一起,但如果TABLE_2没有COL_C,我希望放置像'0'的东西。 但是我刚刚得到了一个'ORA-00918:列模糊定义'错误

我该如何解决这个问题?

+0

你可以发布你的SQL查询吗? – 2014-09-19 13:53:40

回答

3

你可以试试这个

SELECT COL_A, COL_B, COL_C FROM Table1 
UNION 
SELECT COL_A, COL_B, 0 As COL_C FROM Table2 
+0

非常感谢你,AS COL对它进行排序,给它们相同的列名称。 – Casper 2014-09-19 14:03:33

+0

这个答案是真的可以接受的。但@ jramesh1967的其他答案没有意义。 – 2014-09-19 14:19:12

+0

从我这边回答这个问题的投票。 – 2014-09-19 16:00:51

1
SELECT COL_A,COL_B,COL_C FROM TABLE_1 
UNION 
SELECT COL_A,COL_B,'0' AS COL_C FROM TABLE_2 

您还可以能够与闪避

SELECT COL_A,COL_B,COL_C FROM TABLE_1 
UNION 
SELECT COL_A,COL_B,'0' FROM TABLE_2 

的基本思路是,既要有相同数目的相应的列数据类型。

+0

非常感谢,AS COL对它进行了排序,并为它们提供了相同的列名。 – Casper 2014-09-19 14:04:00

+1

@ jramesh1967,'COL_C'是'FLOAT'和** NOT **一个字符串。那么为什么你在'NUMBER 0'周围有单引号? – 2014-09-19 14:13:15

+0

@ KPS-UK,当这个答案失败帮助你的目的时,你为什么跳到结论?也没有应用代码标签,这种回答问题的非专业方式。 – 2014-09-19 14:15:24