2013-03-14 64 views
1

這一直讓我很納悶,如何加入/減去if?

可以說我有這樣的情況:

select (...long sub query..) - (...long sub query..) 

而且我希望把狀態-,有時這意味着它會-有時+,是否有簡單的方法來做到這一點? 我知道的方法是:

select if(condition,(...long sub query..) - (...long sub query..), 
    (...long sub query..) + (...long sub query..)) 

這使得查詢難以閱讀和維護,或puting到存儲過程中,我寧可不要。

我可以把算術運算放在某種var和concat中嗎?

我嘗試才達到是一樣的東西:

select (...long sub query..) if(condition,-,+) (...long sub query..) 
+0

你可以放在一起SQL小提琴的具體例子?從這個抽象例子很難與之聯繫 – amphibient 2013-03-14 15:24:04

+0

@amphibient:他不想重複使用'IF'中的子查詢。 – 2013-03-14 15:35:25

回答

5

不,你不能。

但是,您可以用乘法來代替:

(...) + IF(..., -1, +1) * (...) 
+0

不應該是'query1 + query2 * if()'? – 2013-03-14 15:27:46

+1

@ eric.itzhak:乘法是可交換的 – SLaks 2013-03-14 15:28:07

+0

如果有人問,我從來沒有說過以上:) – 2013-03-14 15:28:35

-1

沒有太大理解你的問題,但你可以在任何字符存儲在字符串或字符變量,並用它在你的語句來串聯