我正在使用这个sql代码
select DATEPART(hour, date) as oHour, SUM(orders.total) as total from orders group by DATEPART(HOUR, date)
在C#数据集中,在ReportViewer控件中创建图表。
示例:sql query返回:
oHour total
---------------
8 589
11 1899
12 890
问题是SQL查询只返回那些小时,有一个跟踪记录。 我需要每小时返回一次记录。 实施例
oHour total
--------------
8 589
9 0
10 0
11 1899
12 890
如何编辑SQL查询?
答案 0 :(得分:0)
select DATEPART(hour, date) as oHour, SUM(COALESCE(orders.total, 0)) as total
from orders
group by DATEPART(HOUR, date)
对于没有订单的orders.total,SUM运算符返回null。使用COALESCE,它将选择最高优先级的数据类型(其中所有类型的优先级都高于NULL)。
答案 1 :(得分:0)
嗯,这很难看,但是这是可能的,因为另一个答案可能在你的情况下不起作用,还没有其他任何内容发布。
0
的列,然后在执行union all
之前在该表上执行group by
。DATEPART
,所以在此之前您可能需要做一些修改。dual
,DB2通常使用sysibm.sysdummy1
,我认为您不需要SQL Server({{1}应该够了。)查询:
SELECT 0, 0
答案 2 :(得分:0)
试试这个
select
s.number as oHour,
SUM(isnull(o.total,0)) as total
from
master..spt_values s
left join orders o on s.number = DATEPART(HOUR, date)
where
s.type = 'P'
and s.number between 0 and 23
group by
s.number
此代码返回每天每小时的总和