我有一份报告,我需要在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经验,并且有大约一年的时间撰写报告。我首先投入了头脑,目前是唯一一个对这一切有所了解的人。如果你确实有答案,请坚持我,因为我不仅希望报告有效,而且还要理解为什么。感谢
答案 0 :(得分:0)
使用下面的表达式添加公式。删除您拥有的四个组,并替换为使用新公式的组。
=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"
)
答案 1 :(得分:0)
我有一个类似的问题,这里已经回答了。 SSRS Category Grouping
我认为您需要使用切换功能来完成这项工作。