2011-11-15 88 views
1

我与follwoing领域的数据库表:如何编写一个sql查询来获得这个输出?

id, loan_no, installment, status 

其中有像

贷款信息,如果贷款有24个分期付款将有24行包含相同loan_no和安装状态这是支付或unpiad 。

所以我想获得所有分期付款status = paid的loan_no。

是否可以写一个查询来获得结果?

+3

是有可能 – PeeHaa

回答

1

试试这个:

SELECT loan_no FROM your_table 
WHERE loan_no NOT IN 
    SELECT DISTINCT loan_no FROM your_table 
    WHERE status = 'unpaid') 
GROUP BY loan_no 
+0

感谢您的快速回答 –

0
SELECT DISTINCT loan_no FROM loan 
WHERE loan_no NOT IN (SELECT DISTINCT loan_no FROM loan WHERE status = 'unpaid') 
1

喜欢的东西

select distinct 
     i.loan_no, 
     i.status 
    from 
     info as i 
     left outer join info as i2 
      on i.loan_no = i2.loan_no and i2.status = 'unpaid' 
    where 
     i.status = 'paid' 
     and 
     i2.loan_no is null 
; 
+0

感谢这也是工作,但需要更长的时间虽然 –

0
SELECT loan_no FROM table where status = "paid" group by loan_no; 
+0

查询返回其贷款的一些无偿的状态产生的结果:OP需要贷款的是具有所有状态=“支付”。 .. – Marco

0
SELECT A.loan_no FROM (
    SELECT loan_no, COUNT(status) AS installments 
    WHERE status = 'paid' 
    GROUP BY loan_no, status 
) AS A 
WHERE A.installments = 24 

因此,所有的贷款总会有24次付款?如果您想为所有已完成24次付款的所有贷款取消loan_no,那么类似上面的操作将会奏效。

+0

OP说_ _“如果贷款有24分期付款”_,他提供了一个例子;) – Marco

+0

是安装量不总是24. –

0
SELECT loan_no FROM YOUR_TABLE 
WHERE id NOT IN (SELECT id FROM YOUR_TABLE WHERE status = 'unpaid') GROUP BY loan_no 
+0

这是错误的:你正在采取无偿分期付款(与子查询),并从表中删除...所以你可以获得分期付款,但不支付所有分期付款的贷款;) – Marco