簡體   English   中英

在SQL情況下更好地使用冗余子查詢

[英]Better use of redundant subquery in sql- case

我有一個關於SQL語句的問題:是否可以“定義子查詢”以防萬一。 這聽起來有點令人困惑,但通過以下示例,我認為我的想法很清楚:

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

我該怎么做,或可以使用什么。 我有一個這樣的查詢,效果很好,但是它是一個巨大的代碼,無法用於維護。

如果使用子查詢,則應將條件放在子查詢中。 例如,如果您有:

(select sum(x) from . . . )

然后做:

(select (case when sum(x) > 0 then sum(x) else 0 end) from . . .

如果您將查詢重寫為

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

然后,您避免重復“ BigSubquery”,但是您確實重復了選擇列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM