SSRS - 按日期分组表达式

时间:2011-05-11 02:16:42

标签: sql-server reporting-services ssrs-2008

使用SS报告服务2008,我正在考虑按日期按月分组设置销售数字的默认报告。

理论上它看起来应该有点像:

Date         Total Sales    Qty 
----------------------------------
01/04/2011   $15.00         3
02/04/2011   $20.00         4
03/04/2011   $00.00         0
Etc

我遇到的问题是这个月没有记录被跳过的日子。 (如上面的03/04/2011)。有没有办法显示没有记录的日期?

2 个答案:

答案 0 :(得分:1)

在SSRS中无法专门执行此操作,但可以在SQL查询中完成。

你需要生成一个临时表(数据库中的永久表也可能是好的,如果你要做的很多),并在其中包含一系列连续日期,然后将它连接到现有的数据查询中有一个外连接。这种方式日期没有数据将在连接后显示为表中的空条目。

例如,如果您有以下表格

<强> DateList

Date
----
2011-01-01
2011-01-02
2011-01-03
2011-01-04
2011-01-05
etc...

<强> SALESDATA

Date        Qty
----------------
2011-01-01  5
2011-01-02  4
2011-01-04  7

然后您可以使用以下查询来获取销售数据 没有销售记录的天数的空记录。

select 
    dl.Date, 
    sd.Qty
from SalesData sd 
    left outer join DateList dl on dl.Date = sd.Date


Date    Qty
--------------
2011-01-01  5
2011-01-02  4
2011-01-03  (null)
2011-01-04  7
2011-01-05  (null)
etc...

有关生成要加入的日期列表的信息,请参阅this question

答案 1 :(得分:0)

为了扩展Nathan的答案,为了避免空值,你的select语句可以在sd.QTY字段上使用isnull:
        isnull(sd.QTY,0)为'Qty'