2014-05-10 61 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他整个表作为一个组