为什么在第一种情况下显示debit ='null',第二种情况显示正确的数量

时间:2010-08-25 00:41:58

标签: sql firebird interbase

为什么在第一种情况下显示debit ='null',第二种情况显示正确的数量

SELECT  o.kadastr,             /* Кадастровый номер */
        d.ar_inn,              /* ИНН арендатора */
        o.adres,               /* Адрес участка */
        r.name,                /* ФИО арендатора */
        o.pl_common,           /* Общая плащадь */
        d.arenda_beg,          /* Дата начала ареды */
        d.arenda_end,          /* Дата конца ареды */
        d.dogovor_kadst,       /* Общая кадастровая стоимость */
        rr.ref_str,             /* Вид разрешенного использования */
        ( SELECT SUM(rsh.debit) 
            FROM raschet rsh 
           WHERE rsh.s = 'C' 
             AND rsh.period_y = '2010' 
             AND rsh.dog_no = d.dog_no_fact) debet  /* Годовая арендная плата */
    FROM dogovor d
    INNER JOIN recviz r ON (r.inn_fact = d.ar_inn)
    LEFT JOIN object o ON (o.obj_no = d.obj_no)
    LEFT JOIN ras_refstr rr ON (rr.rasrefstrid = o.object_razr_isp)

SELECT SUM(rsh.debit) debit
FROM raschet rsh
WHERE r.dog_no = '1000' 
AND r.s = 'C' 
AND r.period_y = '2010'

1 个答案:

答案 0 :(得分:2)

debet因此为NULL

AND rsh.dog_no = d.dog_no_fact

如果没有rs.dog_nod.dog_no_fact匹配,则子选择将返回NULL。