如何在ssrs表达式

时间:2016-05-04 11:30:55

标签: reporting-services ssrs-2008-r2 bids ssrs-expression

考虑五月是当月

我有日期列表 例如:

日期项目数

05/3/2016 4

05/3/2016 5

05/4/2016 7

05/10/2016 10

05/11/2016 50

05/30/2016 100

我想显示may中的所有日期和日期中的项目总和,如果日期中没有记录则应该留空 例如:

日期项目数

05/1/2016

05/2/2016

05/3/2016 9

05/4/2016 7

2016年5月5日

05/10/2016 10

05/11/2016 50

2016年5月12日

2016年5月13日

05/30/2016 100

有关此

的任何帮助

2 个答案:

答案 0 :(得分:1)

在SSRS中无法做到这一点。

通常当我遇到类似情况时,我会制作一张所需日期的表格,然后将我的数据左键加入,这样日期就会出现在日期不在数据中的时候。

我使用CTE在SQL中创建表:

DECLARE @START_DATE DATE = '01/01/2016' 
DECLARE @END_DATE  DATE  = '05/31/2016'

;WITH GETDATES AS  
    (  
        SELECT @START_DATE AS THEDATE
        UNION ALL  
        SELECT DATEADD(DAY,1, THEDATE) FROM GETDATES  
        WHERE THEDATE < @END_DATE  
)

然后将该表与您的数据一起使用(可能将您当前查询的结果放在#TEMP_TABLE中)。

SELECT * 
FROM GETDATES D 
LEFT JOIN #TEMP_TABLE T ON T.DATE_FIELD = D.THEDATE 

答案 1 :(得分:0)

确实,我们不能在SSRS中做这件事。

为了实现这一点,我们需要制作一个日期表,然后通过制作LEFT JOIN我们可以实现我们的目标。

让我向您展示一个示例:

DECLARE @month AS INT = 5
DECLARE @Year AS INT = 2016
CREATE TABLE #Temp ( Dates Date)

;WITH N(N)AS 
(SELECT 1 FROM(VALUES(1),(1),(1),(1),(1),(1))M(N)),
tally(N)AS(SELECT ROW_NUMBER()OVER(ORDER BY N.N)FROM N,N a)

INSERT INTO #Temp
SELECT DATEFROMPARTS(@year,@month,N) dates FROM tally 
WHERE N <= DAY(EOMONTH(datefromparts(@year,@month,1)))

SELECT Date, SUM(ISNULL(TotalCount,0)) NoOfItems FROM #Temp T
LEFT JOIN TableName S ON S.Date = T.Dates
GROUP BY Dates
DROP TABLE  #Temp

这将返回NoOfItems的所有日期。是的,您必须根据您的要求更改上述查询。感谢