0

我有一个关于 SQL 语句的问题:是否可以“定义一个子查询”以防万一。这听起来有点令人困惑,但是通过以下示例,我认为我的想法很清楚:

select 
 Column1,
 Column2,
 Case
    WHEN <BigSubquery> > 0 THEN <BigSubquery>
    ELSE 0
 END
from ...

我该怎么做,或者我可以使用什么。我有这样一个查询,效果很好,但它是一个巨大的代码,不能用于维护。

4

2 回答 2

1

如果您使用子查询,则应将条件放在子查询中。例如,如果您有:

(select sum(x) from . . . )

然后做:

(select (case when sum(x) > 0 then sum(x) else 0 end) from . . .
于 2013-04-01T13:17:40.687 回答
0

如果您将查询重写为

select 
   Column1,
   Column2,
   Case
       WHEN Column3 > 0 THEN Column3
       ELSE 0
   END
from 
(
    select 
        Column1,
        Column2,
        BigSubquery as Column3
    from ...
)
t

然后你避免重复“BigSubquery”,但你确实复制了选择列表。

于 2013-04-01T13:17:43.960 回答