簡體   English   中英

按行的詳細賬齡報告

[英]Detailed Aging Report by Row

我有一份報告需要在SSRS 2008 R2中進行會計處理。 這是一份賬齡報告,其中顯示了所有欠款,分別按0-30天,31-60天,61-90天和90天分組。 我有這個查詢,帶來了所有正確的信息。

SELECT DISTINCT
    T.ttfid,
    N.ttfn,
    T.T_DATE,
    T.NUM,
    T.DESCR,
    T.PAYEE,
    T.DEBIT,
    T.CREDIT,
    T.X,
    T.TTYPE,
    T.BORROWER,
    T.INVOICE_N,
    T.PAID_ON,
    T.CHECK_N,
    N.CustId,
    N.LOAN_NO,
    N.CustFn,
    B.LNAME,
    cc.CCODE
FROM TRANS T 
LEFT OUTER JOIN ttMAIN N ON (T.ttfid = N.ttfid)
LEFT OUTER JOIN BORROWER B ON
    (T.ttfid = B.ttfid) AND
    (B.BORR_NO = 1)
LEFT OUTER JOIN ttCC cc ON N.CustId = cc.cid
WHERE
    (
        (T.PAID_ON IS NULL) OR (T.PAID_ON > @dtEnd)
    ) AND
    (T.DEBIT > 0) AND
    (T.T_DATE BETWEEN @dtStart AND @dtEnd)
ORDER BY
    T.PAYEE,
    T.T_DATE DESC,
    T.NUM

在SSRS中,我可以按CCODE正確分組,並使用類似以下的子組獲得正確的總數

=iif(DateDiff("d",Fields!T_DATE.Value, Parameters!dtEnd.Value)>=0 and DateDiff("d",Fields!T_DATE.Value,Parameters!dtEnd.Value)<=30,Fields!T_DATE.Value,nothing)
=iif(DateDiff("d",Fields!T_DATE.Value, Parameters!dtEnd.Value)>=31 and DateDiff("d",Fields!T_DATE.Value,Parameters!dtEnd.Value)<=60,Fields!T_DATE.Value,nothing)
=iif(DateDiff("d",Fields!T_DATE.Value, Parameters!dtEnd.Value)>=61 and DateDiff("d",Fields!T_DATE.Value,Parameters!dtEnd.Value)<=90,Fields!T_DATE.Value,nothing)
=iif(DateDiff("d",Fields!T_DATE.Value, Parameters!dtEnd.Value)>=91 and DateDiff("d",Fields!T_DATE.Value,Parameters!dtEnd.Value)<=99999999,Fields!T_DATE.Value,nothing)

但是,細節最終沒有顯示出來,或者我在各組之間重復了文件,如下所示。

如果您發現所有組的ttfn都相同,但只增加了一個總數。

我想我需要使用多個數據源或將進行預排序的查詢。 上面的SQL查詢不是我自己的。 我確實有一點SQL經驗,並且大約有一年編寫報告。 我一直是首屈一指的,目前是唯一一個對這一切有任何了解的人。 如果您有答案,請堅持我,因為我不僅希望報告能夠工作,而且也希望理解。 謝謝

實際報告的圖像顯示了組

使用以下表達式添加公式。 刪除您擁有的四個組,並替換為使用新公式的一組。

=iif(
    DateDiff("d", Fields!T_DATE.Value,Parameters!dtEnd.Value) <= 30, "0-30 Day",
    iif(
        DateDiff("d", Fields!T_DATE.Value,Parameters!dtEnd.Value) <= 60, "31-60 Day",
        iif(
            DateDiff("d", Fields!T_DATE.Value,Parameters!dtEnd.Value) <= 90, "61-90 Day",
            "91 Day and over"
        )
    )
 )

我不確定該邏輯是否完全符合預期的結果,但這是基於您到目前為止提供的內容。 我不知道兩個開始和結束參數的含義,這是我添加此警告的原因之一。

注意:該表達式也很容易重寫為switch()

=switch(
    DateDiff("d", Fields!T_DATE.Value,Parameters!dtEnd.Value) <= 30, "0-30 Day",
    DateDiff("d", Fields!T_DATE.Value,Parameters!dtEnd.Value) <= 60, "31-60 Day",
    DateDiff("d", Fields!T_DATE.Value,Parameters!dtEnd.Value) <= 90, "61-90 Day",
    true, "91 Day and over"
 )

我有一個類似的問題,在這里回答了。 SSRS類別分組

我認為您需要使用switch功能來使這項工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM