联盟子查询条件

时间:2015-03-03 11:11:47

标签: sql subquery union conditional-statements

我正在试图通过union子查询来创建一个案例,但我无法理解它。我想做这样的事情:

select t.colA, t.colB,
case when t1.colC = 1 and t2.colC=0 then 1
else t.colC end colC
from 
(
select t1.colA,t1.colB,t1.colC from table1 t1
union all
select t2.colA,t2.colB,t2.colC from table2 t2
) t

这样的事情可能吗?或者还有其他方法吗?我绝对需要那个联盟和案例。

感谢。

3 个答案:

答案 0 :(得分:0)

您无法在外部SELECT中引用t1t2

答案 1 :(得分:0)

你无法通过工会实现目标。 在一个联合中,你得到结果中的每一行t1 als,以及每一行t2。

如果你需要比较t1中一行的值,同时需要一个t2的值,你必须使用一个连接来合并t1的行和t2的行。

然后你就可以进行比较了。

如果您详细说明,我们可以帮助您,您可以作为输入,并希望作为输出

答案 2 :(得分:0)

如果你坚持按照你想要的方式去做,那么你就不能参考t1或t2,你必须引用别名子查询,你可以用以下方式来做:

select t.colA, t.colB,
case when t.colC = 1 and t.colD is null then 1
else t.colD end colC
from 
(
select t1.colA,t1.colB,t1.colC, null as colD from table1 t1
union all
select t2.colA,t2.colB, null, t2.colC from table2 t2
) t