我有一个数据集将传递给SSRS报告,如下所示:
CODE TEXT COUNT MONTH
100 ABC 20 January
100 ABC 10 February
200 DEF 15 January
200 DEF 15 February
300 GHI 0 x
400 JKL 10 January
此'x'表示当前年份的代码/文本没有数据,但是,我仍然需要显示它。在SSRS中,我想要显示当前月份(2月)的列和要显示的年度列:
CODE TEXT MONTH_TO_DATE YEAR_TO_DATE
100 ABC 10 30 [20 + 10]
200 DEF 15 30 [15 + 15]
300 GHI 0 0 [0]
400 JKL 0 10 [0 + 10]
这在SSRS 2008中是否可行?
答案 0 :(得分:1)
这必须在SQL中完成,因此如果您发布了已经存在的内容而不是从该SQL产生的数据,那么调整SQL会更容易。
无论如何,我们必须找到一种方法来了解它是当前月份并显示它,我们可以使用SQL CASE
语句。也许你有一个可以查询的日期字段,它可能比下面更清晰,但我只是运行你提供的数据(也就是说,我们只有一个月份名称,我们使用{{ 1}}和DATENAME
SQL函数 - 显然,如果您有多年的数据,因为每个2月将聚合到当前月份,但是您可以了解该做什么):
GETDATE
现在,在你对Vlad的回答的评论中,你说如果你使用嵌套查询,你就不能做SELECT [CODE], [TEXT],
SUM(CASE WHEN [MONTH] = DateName(month, GetDate()) THEN [COUNT] END) AS CurrentMonth,
SUM([COUNT]) AS YearToDate
FROM MyTable
GROUP BY [CODE], [TEXT]
ORDER BY [CODE], [TEXT]
,你可以这样做:
SUM(COUNT(fieldname))
如果要显示零值的SELECT [CODE], [TEXT], SUM([COUNT]) AS Total
FROM ( -- This is a nested query
SELECT [CODE], [TEXT], COUNT(somefield) AS [COUNT]
FROM MyTable
)
GROUP BY [CODE], [TEXT]
ORDER BY [CODE], [TEXT]
,请使用YearToDate单元格的以下格式:
x
答案 1 :(得分:1)
这可以在SQL或SSRS中完成 - 在SQL中执行它(如Chris Latta所述)应该更简单,更高效,但如果该选项不可用,则以下是如何在SSRS中执行此操作:
CODE
和TEXT
列中添加一个组(包括组页脚)到表中。CODE
和TEXT
值添加到组页脚。将以下表达式输入到年份至今列的组页脚行中的相应单元格中:
=Sum(Fields!COUNT.Value)
在月份日期列的组页脚行的相应单元格中输入以下表达式:
=Sum(iif(MonthName(DatePart("m",Now()))=Fields!MONTH.Value,Fields!COUNT.Value,0))
答案 2 :(得分:0)
我认为你应该从sql select / storage过程返回这个。您应该使用LEFT JOIN我认为这些0结果