2014-05-10 62 views
0

的情況有可能創建有條件的情況下內的SELECT語句,這樣選擇裏面的MySQL

SELECT la.*, 
(
    CASE 
    WHEN la.SoftDelete = 1 
     SELECT SUM(la.LoansAmount) FROM loans_account 
    ELSE 
     SELECT 0 
    END   
) AS outstanding 
FROM loans_account 

我已經試過這一點,但它不工作,我想知道如何去請這樣的事情。

+0

你能提供一些樣本數據和預期結果嗎?目前還不清楚你試圖做什麼,因爲你已經把聚合函數放到一個沒有「group by」的查詢中。 –

回答

2

試試這個

SELECT la.*, CASE 
       WHEN la.SoftDelete = 1 THEN SUM(la.LoansAmount) 
       ELSE 0 END AS outstanding 
    FROM loans_account 
+1

哇,這兩個答案以我想要的代碼的方式工作,現在我正在修復哪個答案選擇,謝謝你們,你們都很棒 – Ramos1116

+0

歡迎:)。 –

+2

@ Ramos1116。 。 。您可以自行決定接受哪個答案,但您只能接受一個答案。通常,OP會在做出選擇時考慮到時間安排(這是第一次)和解釋(這更好地解釋了問題)。當你有足夠的積分時,你可以隨心所欲地提供儘可能多的答案,但你只能接受一個答案。 –

3

我猜你需要貸款金額的總和,其中softdelete爲1

SELECT la.*, 
SUM(
    CASE 
    WHEN la.SoftDelete = 1 
    THEN la.LoansAmount 
    ELSE 
     0 
    END   
) AS outstanding 
FROM loans_account la 
WHERE ... 

,或者如果你需要從整體的總和,其中softdelete是1,那麼你可以這樣做

SELECT la.*, 
    SUM(la.LoansAmount) outstanding 
FROM loans_account la 
WHERE la.SoftDelete = 1 

注意總和是集合函數,沒有集合,它會產生一個單行假設t他整個表作爲一個組