如何获取SSRS报告以显示0值

时间:2016-07-04 10:17:36

标签: visual-studio reporting-services

我有一份SSRS报告,该报告显示从访问表中选择某些特定选项的金额。

例如,在这100个记录中,不一定每个选项都被选中,让我们说明细分如下

  • 选项a 32
  • 选项b 28
  • 选项c 0
  • 选项d 0
  • 选项e 40
  • 选项f-j 0

当我运行我的报告时,它只会给我选项a,b和e的行,但是如何显示所有10个选项,即使是0值的选项?

更新:这是查询从

中提取数据的代码
SELECT Agent, Team, First_Choice_Options, Start_Time FROM Record 
 WHERE (Start_Time >= CONVERT(DATE, @Startdate)) 
   AND (Start_Time < CONVERT(DATE, DATEADD(DAY, 1, @Enddate))) 
   AND (Team = 'Triage') AND (Agent IN (@Agent))

1 个答案:

答案 0 :(得分:1)

这实际上是一个SQL事物,没有任何特定于Reporting Services。 SSRS仅显示从数据源返回的内容。因此,您需要更改查询以返回未获得任何活动的选项。一个例子如下。底部的SELECT语句是诀窍所在; LEFT JOIN为您做到这一点。其他一切只是让代码工作,所以我可以测试它。

CREATE TABLE Record (Agent varchar(30), 
    Team varchar(30), 
    First_Choice_Options varchar(30), 
    Start_Time datetime);

INSERT INTO Record VALUES ('Some Agent','Triage','Option A','2016-06-05'),
    ('Some Agent','Triage','Option A','2016-06-10'),
    ('Some Agent','Triage','Option B','2016-06-15'),
    ('Some Agent','Triage','Option B','2016-06-20'),
    ('Some Agent','Triage','Option A','2016-06-25')

CREATE TABLE Options (First_Choice_Options varchar(30))

INSERT INTO Options VALUES ('Option A'),('Option B'),('Option C'),('Option D')

DECLARE @Startdate datetime = '2016-06-01',
    @Enddate datetime = '2016-06-30',
    @Agent varchar(30) = 'Some Agent'

SELECT O.First_Choice_Options AS Options, SUM(IIF(R.First_Choice_Options IS NULL, 0, 1)) AS Options_Count 
FROM Options O LEFT JOIN Record R
ON O.First_Choice_Options = R.First_Choice_Options
AND (Start_Time >= CONVERT(DATE, @Startdate)) 
    AND (Start_Time < CONVERT(DATE, DATEADD(DAY, 1, @Enddate))) 
    AND (Team = 'Triage') AND (Agent IN (@Agent))
GROUP BY O.First_Choice_Options

DROP TABLE Record
DROP TABLE Options

如果针对测试数据库运行此操作,您将看到结果的样子。选项A和B将具有计数,选项C和D将报告计数的0(零)。此代码假定您在数据源中有一些类似于表的选项。

Options                        Options_Count
------------------------------ -------------
Option A                       3
Option B                       2
Option C                       0
Option D                       0
祝你好运!