我正在试图通过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
这样的事情可能吗?或者还有其他方法吗?我绝对需要那个联盟和案例。
感谢。
答案 0 :(得分:0)
您无法在外部SELECT中引用t1
和t2
。
答案 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