如何按天计算物品

时间:2014-01-02 15:09:20

标签: sql visual-studio-2008 reporting-services

我需要从我们的票证数据库中进行报告,该数据库每天都有技术人员关闭的票数。我的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│
└───────────┴───────────┴──────────────┘ 

知道我做错了什么吗?任何帮助将不胜感激。

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子句,看看你得到了什么。

如果我能澄清任何事情,请告诉我。