我需要按用户报告销售总额,并包括递归总数。问题是,每个客户都有2个客户经理,而这些客户经理可以来自不同的团队。在每个父级,我要返回组级每个相关帐户的不同总和。
例如:
Name LEVEL AccountNum Sales
James 1 A1 1000
A2 2000
A3 5000
Mike 2 A1 1000
A2 2000
Sally 3 A1 1000
John 3 A1 1000
Mary 3 A2 2000
Matt 2 A2 2000
A3 5000
Andy 3 A2 2000
A3 5000
Bob 3 A3 5000
我只想返回总计,而不显示帐户详细信息:
Name Sales
James 8000
Mike 3000
Sally 1000
John 1000
Mary 2000
Matt 7000
Andy 7000
Bob 5000
我是SSRS的相对新手,因此非常感谢您提供有关如何实现上述小组总数的建议!谢谢!
我尝试在SQL中使用递归查询,但由于跨团队帐户的原因,总数只能达到2级。按等级使用分区也只能在第2级使用。(例如
{row_number() over (partition by AccountNum, TeamLeaderKey ORDER BY AccountNum ASC))}
),以排除排名大于1的任何客户。当存在来自不同级别2的不同团队的客户经理时,级别1下降。
答案 0 :(得分:0)
万一其他人遇到此问题,这就是我解决的方法。我在数据集中引入了两个新字段: 团队内排名:
Case When ROW_NUMBER() OVER (PARTITION BY AccountNum, TeamLeaderKey ORDER BY AccountNum ASC) > 1 Then 0 Else 1 End
InterTeamRank:
Case When ROW_NUMBER() OVER (PARTITION BY AccountNum ORDER BY AccountNum ASC) > 1 Then 0 Else 1 End
我在SSRS中设置了一个参数以返回最大水平。
然后我在SSRS中使用以下表达式:
IIf( Level() < (Parameters!MaxLevel.Value - 1),
SUM((Fields!InterTeamRank.Value * Fields!Amount.Value), "StaffName", Recursive),
IIf( Level() = (Parameters!MaxLevel.Value - 1),
SUM((Fields!IntraTeamRank.Value * Fields!Amount.Value), "StaffName", Recursive),
SUM(Fields!Amount.Value), "StaffName")
)
)
也许不是最优雅的解决方案,但它可以达到我的目的。如果在区域之间(而不是团队之间)共享一个帐户,则可能会中断,但是在我的情况下这不太可能。我仍然想知道是否有人有更强大的解决方案。