SSRS集团由日期为饼图

时间:2016-11-22 01:43:26

标签: sql-server reporting-services charts reportbuilder

我刚刚开始学习SSRS,请原谅我,如果这是一个简单的问题,但我似乎无法找到合适的答案......我有一个带服务票据的数据集,查询如下:

SELECT service_tickets, Company_id, Urgency, Date_Entered_UTC, Date_Closed_UTC
   CASE when servicetype = '' then 'Other' else servicetype end as ServiceType, 
   CASE when servicesubtype = '' then 'Other' else servicesubtype end as ServiceSubType, 
FROM v_Service
WHERE Hours_Actual >0

我希望使用饼图中的date_entered字段按季度对结果进行分组(并最终将其显示为总数的百分比,即在Q1中记录的所有票证的40%,20%的所有门票都记录在Q2等,但我稍后会担心)。下面的查询给出了正确的计数:

SELECT count(service_tickets) as Tickets 
FROM v_service 
   WHERE ...
GROUP BY DATEDIFF(qq, date_entered, getdate())

但是,由于我在同一报告中使用数据集中的多个图表,因此我需要保留第一个查询中的所有字段。因此,我试图弄清楚如何告诉SSRS将第一个数据集的结果分组,以便从第二个查询中获得结果。从本质上讲,如何使用原始数据集将group by datediff转换为饼图?

2 个答案:

答案 0 :(得分:0)

我实际上发现最简单的方法是将图表作为子报表插入,从而创建自己的数据集,而不受现有图表中使用的数据集的限制。

答案 1 :(得分:0)

最简单的方法是对SSRS表达式进行分组。在这种情况下:

=DATEDIFF(DateInterval.Quarter, Fields!date_entered.Value, Now())

但是,将该表达式添加为数据集中的计算列可能更清晰。打开数据集属性,选择左侧的“字段”,然后单击“添加”...“计算列”。然后命名您的字段并在源框中添加表达式。

但是您应该能够在SQL查询中将其添加为附加列,而不会影响报表上的其他项。只需将DATEDIFF(qq, date_entered, GETDATE()) AS Quarters_since_entered添加到SELECT子句中即可。