2011-03-30 60 views
0

我有3列的表,SQL Server 2008中SQL Server查询组由项目

item, count , date 

我想作为与具有格式2011 日期colums选择每个项目的总数为当天查询-03-30 09:00:00.000

select 
    date,item, sum(count) as total 
from 
    table1 
group by 
    date,item 

编辑:

select item, dateadd(day,datediff(day,0,date),0) as dateInserted, sum(count) 
as total from Table1 group by item, dateadd(day,datediff(day,0,date),0) order by 1 

第一选择换货政... rns总计但按日期时间分组而不是日期...然后第二个返回总计正确,但我发现一些项目出现两次相同的日期,但不同的总数

+2

“客户群”进入此处何处? – Blorgbeard 2011-03-30 15:46:58

+0

此查询有何结果? – Bastardo 2011-03-30 15:48:40

+0

您是否需要添加where子句以将行限制为“当前日期”? – Beth 2011-03-30 15:53:55

回答

1

听起来像你正在寻找'当前日'的结果?

select item, dateadd(day, datediff(day, 0, date), 0) as dateInserted, 
     sum(count) as total 
from Table1 
WHERE  
    dateadd(day, datediff(day, 0, [date]), 0) = 
    dateadd(day, datediff(day, 0, getdate()), 0) 
group by 
    item, dateadd(day, datediff(day, 0, date), 0) 
order by 1 

如果您使用SQL Server 2008中,使用DATE数据类型。

select item, 
     CAST([date] as DATE)) as dateInserted, 
     sum(count) as total 
from Table1 
WHERE  
    CAST([date] as DATE)) = CAST(getdate() as DATE) 
group by 
    item, CAST([date] as DATE)) 
order by 1 
+0

是在正确的轨道上谢谢...插入或凡datedadd(day ... getdate()-1)前一天的结果。欣赏它。 – vbNewbie 2011-03-30 15:59:16

+0

为什么我仍然得到总计分组两次,像项目20出现两次2011-03-30日期但有2个不同的总计 – vbNewbie 2011-03-30 16:57:08

+0

@vbNewbie:什么样的数据类型是列'项目? – 2011-03-30 17:06:05