我尝试简化以下代码,但除了复制和粘贴之外,我似乎无法获得正确的语法,这使代码难以阅读。有人可以指出我正确的方向。
select att1, att2 from LONG EXPRESSION
union
select att2, att1 from LONG EXPRESSION
我希望这样做
select att1, att2 union select att2, att1
from LONG EXPRESSION
或类似
select att1, att2 from LONG EXPRESSION X
union
select att2, att1 from X
非常感谢
答案 0 :(得分:2)
您正在寻找一个常见的表格表达式,即CTE:
with t as (
select att1, att2
from LONG EXPRESSION
)
select t.att1, t.att2
from t
union all
select t.att2, t.att1
from t;
请注意,我使用的是union all
而不是union
。这是优选的 - 除非你故意想要产生消除重复的开销。
答案 1 :(得分:1)
在我的手机上,请原谅格式化:)
SELECT (CASE multiplier.ID WHEN 0 THEN src.att1 ELSE src.att2 END),
(CASE multiplier.ID WHEN 1 THEN src.att1 ELSE src.att2 END)
FROM LONG_EXPRESSION src CROSS JOIN
(SELECT 0 AS ID
UNION ALL
SELECT 1 AS ID
) multiplier