考虑五月是当月
我有日期列表 例如:
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
有关此
的任何帮助答案 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的所有日期。是的,您必须根据您的要求更改上述查询。感谢