需要SQL来概述发票

时间:2015-06-24 19:06:27

标签: sql-server

我有桌子:

  • 发票(factuur)与aa。 ID,金额,日期,除去
  • 付款(journaal)与aa。 invoiceID,debet,credit,date,paided
  • 第二次付款(dbetalingen)与aa。 invoiceID,日期,金额,支付(是/否)

我提出了这个问题:

select 
    dfactuur.factuurid, 
    isnull(jnaf,0)+isnull(oldafschr,0) afgeschr,
    isnull(fbetaald,0)+isnull(oldbetaald,0)betaald,
    bedrag,
    betalingen.datum,
    dfactuur.datum, 
    cast(sum(isnull((isnull(betalingen.credit,0)/dfactuur.bedrag)*cast(betalingen.datum-dfactuur.datum as integer),0))/count(*)as integer) dagen 
from 
    dfactuur 
    LEFT JOIN(
        SELECT 
            factuurid,
            ISNULL(Sum(credit),0)-ISNULL(Sum(debet),0)As FBetaald,
            datum,
            credit
        FROM 
            journaal 
        WHERE 
            Soort=1 AND 
            betaald=1
        GROUP BY 
            credit,
            datum,
            factuurid) 
        As betalingen 
        ON betalingen.factuurid=Dfactuur.factuurid 
    LEFT JOIN(
        SELECT 
            factuurid,
            ISNULL(Sum(credit),0)-ISNULL(Sum(debet),0)As JNAf 
        FROM 
            journaal 
        WHERE 
            Soort=1 AND 
            ISNULL(betaald,0)=0 
        GROUP BY 
            factuurid)
        As afschrijvingen ON afschrijvingen.factuurid=Dfactuur.factuurid
    LEFT JOIN(
        SELECT 
            factuurid , 
            ISNULL(Sum(bedrag),0) As OldBetaald 
        FROM 
            DBetaling 
        WHERE 
            betaald=1 
        GROUP BY 
            factuurid)
        As Oldbetalingen ON Oldbetalingen.factuurid=Dfactuur.factuurid
    LEFT JOIN(
        SELECT 
            factuurid, 
            ISNULL(Sum(bedrag),0) As OldAfschr 
        FROM 
            DBetaling 
        WHERE 
            ISNULL(betaald,0)=0 
        GROUP BY factuurid)
        As OldAfschr ON OldAfschr.factuurid=Dfactuur.factuurid
    LEFT JOIN(
        SELECT 
            factuurid, 
            count(*) Herh 
        FROM 
            Herhaling 
        GROUP BY 
            factuurid) 
        As Herhalingen ON Herhalingen.factuurid=dfactuur.factuurid
WHERE 
    ISNULL(verwijderd,0)=0 AND 
    dfactuur.relatienr = 1329--1284
GROUP BY 
    dfactuur.factuurid,
    afschrijvingen.jnaf,
    OldAfschr.OldAfschr,
    betalingen.fbetaald,
    Oldbetalingen.oldbetaald,
    bedrag,
    betalingen.datum,
    dfactuur.datum

这会产生许多记录,当在一张发票上进行更多付款时,记录会显示一次以上。

我需要一个返回1条记录的查询: 发票总数和未全额付款的数量,所有发票总金额,已付金额,写入总金额以及付款天数。

我不需要dfactuur.factuurid

0 个答案:

没有答案