我有一个关于SQL语句的问题:是否可以“定义一个子查询”以供多种用法使用。这听起来有点令人困惑但是通过以下示例,我认为很清楚我的想法:
select
Column1,
Column2,
Case
WHEN <BigSubquery> > 0 THEN <BigSubquery>
ELSE 0
END
from ...
我该怎么做,或者我可以使用什么。我有一个很好的查询,但它是一个巨大的代码,不能用于维护。
答案 0 :(得分:1)
如果您使用的是子查询,则应将条件放在子查询中。例如,如果你有:
(select sum(x) from . . . )
然后做:
(select (case when sum(x) > 0 then sum(x) else 0 end) from . . .
答案 1 :(得分:0)
如果您将查询重写为
select
Column1,
Column2,
Case
WHEN Column3 > 0 THEN Column3
ELSE 0
END
from
(
select
Column1,
Column2,
BigSubquery as Column3
from ...
)
t
然后你避免重复“BigSubquery”,但你确实复制了选择列表。