2011-05-11 73 views
2

使用SS报表服务2008年,我正在设置一个按日期分组的月销售数据的默认报表。SSRS - 按日期分组表达式

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

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)。有没有办法显示没有记录的日期?

回答

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 

,那么你可以使用下面的查询来获取的销售数据对于没有sa的日子, 空记录录制的。

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

0

要扩大Nathan的回答,避免你的SELECT语句的sd.QTY场使用ISNULL空值:
ISNULL(sd.QTY,0)作为 '数量'