按行的详细帐龄报告
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)
然而,详细信息最终要么没有显示,要么我得到跨组的重复文件,如下所示。
If you notice the ttfn is the same across all groups but only adds to one total.
我在想我需要使用多个数据源或一个将进行预排序的查询。上面的 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"
)
)
)
我不完全确定此逻辑是否完全符合预期结果,但它基于您目前在此处提供的内容。我不知道这两个开始和结束参数的含义,这是我添加警告的原因之一。
注意:该表达式很容易 re-written 作为 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 Category Grouping
我想你需要使用 switch 函数来完成这项工作。
我有一份报告需要在 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)
然而,详细信息最终要么没有显示,要么我得到跨组的重复文件,如下所示。
If you notice the ttfn is the same across all groups but only adds to one total.
我在想我需要使用多个数据源或一个将进行预排序的查询。上面的 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"
)
)
)
我不完全确定此逻辑是否完全符合预期结果,但它基于您目前在此处提供的内容。我不知道这两个开始和结束参数的含义,这是我添加警告的原因之一。
注意:该表达式很容易 re-written 作为 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 Category Grouping
我想你需要使用 switch 函数来完成这项工作。