我需要从我们的票证数据库中进行报告,该数据库每天都有技术人员关闭的票数。我的SQL查询看起来像这样:
select
i.DT_CLOSED,
rp.NAME,
from INCIDENTS i
join REPS rp on (rp.ID = i.id_assignee)
where i.DT_CLOSED > @StartDate
DT_CLOSED是ISO格式的日期和时间,NAME是代表名称。我的数据集中也有一个名为TICKETSDAY的计算值,使用=DateValue(Fields!DT_CLOSED.Value)
计算,给我一天没有时间。
现在我有一个按NAME分组的表格,然后是TICKETSDAY,我希望最后一列是一张票数。但是当我将最后一列设置为=Count(DT_CLOSED)
时,它会为每张票的每一行列出1而不是聚合,以便我的表看起来像这样:
┌───────────┬───────────┬──────────────┐
│Name │Day │Tickets Closed│
├───────────┼───────────┼──────────────┤
│JOHN SMITH │11/01/2013 │ 1│
│ │ ├──────────────┤
│ │ │ 1│
│ │ ├──────────────┤
│ │ │ 1│
│ ├───────────┼──────────────┤
│ │11/02/2013 │ 1│
└───────────┴───────────┴──────────────┘
我需要它:
┌───────────┬───────────┬──────────────┐
│Name │Day │Tickets Closed│
├───────────┼───────────┼──────────────┤
│JOHN SMITH │11/01/2013 │ 3│
│ ├───────────┼──────────────┤
│ │11/02/2013 │ 1│
└───────────┴───────────┴──────────────┘
知道我做错了什么吗?任何帮助将不胜感激。
答案 0 :(得分:1)
我相信Marc B是正确的。您需要按select语句中的非聚合列进行分组。尝试这些方法。
select
i.DT_CLOSED,
rp.NAME,
COUNT(i.ID)
from INCIDENTS i
join REPS rp on (rp.ID = i.id_assignee)
where i.DT_CLOSED > @StartDate
GROUP BY rp.NAME, i.DT_CLOSED
如果没有group by将您的行聚合在一起,那么您的查询会明确地计算每一行。我不熟悉报表生成器的工作方式,但尝试手动添加group by子句,看看你得到了什么。
如果我能澄清任何事情,请告诉我。