我试图简化下面的代码,但除了复制和粘贴代码之外,我似乎无法正确地掌握语法,这使得代码难以阅读。有人能给我指个正确的方向吗?
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
非常感谢
发布于 2017-11-01 00:51:47
在我的手机上,请原谅格式化:)
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
发布于 2017-11-01 00:27:38
您正在寻找一个通用表表达式,即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
。这是更好的选择--除非你有意要承担消除重复的开销。
https://stackoverflow.com/questions/47046393
复制相似问题