2011-07-24 44 views
1
declare @customerID int 
set @customerID=1 


;with cteDates as 
(
    select dateadd(hh, datediff(hh, 0, getdate()), 0) as [Date] 
    union all 
    select dateadd(hh, -1, [Date]) as [Date] 
    from cteDates 
    where [Date] > dateadd(hh, -23, getdate()) 
) 
select 
    sum(coalesce(field1,0)) field1, 
    sum(coalesce(field2,0)) field2, 
    sum(coalesce(field3,0)) field3, 
    sum(coalesce(field4,0)) field4, 
    sum(coalesce(field5,0)) field5, 
    d.[Date] 
from cteDates as d left join [Statistics] s 
on d.Date=s.date 
where [email protected] and s.date>dateadd(hh,-24,getdate()) 
group by d.Date 

我想要得到一定的客户每小时的统计,如果没有价值,我想选择0反正...为什么这个tsql查询没有选择它的意图?

此查询选择,存在于统计表只行即使我已经留下了加盟轧光CTE ...

感谢,...

回答

1

这是因为你的WHERE子句中指的统计数据表。

尝试:

declare @customerID int 
set @customerID=1 

;with cteDates as 
(
select dateadd(hh, datediff(hh, 0, getdate()), 0) as [Date] 
union all 
select dateadd(hh, -1, [Date]) as [Date] 
from cteDates 
where [Date] > dateadd(hh, -23, getdate()) 
) 
select 
sum(coalesce(field1,0)) field1, 
sum(coalesce(field2,0)) field2, 
sum(coalesce(field3,0)) field3, 
sum(coalesce(field4,0)) field4, 
sum(coalesce(field5,0)) field5, 
d.[Date] 
from cteDates as d left join [Statistics] s 
on d.Date=s.date 
and [email protected] and s.date>dateadd(hh,-24,getdate()) 
group by d.Date 
+0

非常感谢你的l33t! – eugeneK

+0

no problemo .... –

+0

http://wiki.lessthandot.com/index.php/WHERE_conditions_on_a_LEFT_JOIN – HLGEM

相关问题