这是我的困境。我在SQL数据库中有一个名为booking_date
的字段。日期格式如下
2014-10-13 12:05:58.533
我希望能够计算每个日期(不是日期时间)的预订次数以及运行总数。
所以我的报告看起来像是这样
我的SQL代码是这样的
SELECT
dbo.book.create_time,
replace(convert(nvarchar, dbo.book.create_time, 106),' ', '/') as bookingcreation,
count(*) as Book_Count
这 ....这里的表格
但是,我的计算计算是根据此类日期格式计算日期> 2014-10-13 12:05:58.533无法正确计算。
相反,我得到了这个:
另外,我不知道如何计算运行总计。但我首先需要正确计算。 非常感谢任何帮助。
答案 0 :(得分:2)
您似乎在使用SQL Server。要按天计算:
SELECT cast(dbo.book.create_time as date) as create_date
count(*) as Book_Count
FROM ...tables here
GROUP BY cast(dbo.book.create_time as date)
ORDER BY create_date;
您可以使用累积和函数获取SQL Server 2012+中的累积总和:
SELECT cast(dbo.book.create_time as date) as create_date
count(*) as Book_Count,
sum(count(*)) over (order by cast(dbo.book.create_time as date) ) as Running_Count
FROM ...tables here
GROUP BY cast(dbo.book.create_time as date)
ORDER BY create_date;
在早期版本中,您可以使用相关子查询或cross apply
执行类似操作。
编辑:
在SQL Server 2008中,您可以执行以下操作:
WITH t as (
SELECT cast(dbo.book.create_time as date) as create_date
count(*) as Book_Count
FROM ...tables here
GROUP BY cast(dbo.book.create_time as date)
)
SELECT t.create_date, t.Book_Count,
(SELECT SUM(Book_Count)
FROM t t2
WHERE t2.create_date <= t.create_date
) as Running_Count
FROM t
ORDER BY create_date;
答案 1 :(得分:0)
尝试在您的查询中使用trunc(book.create_time)
而不是您正在进行的转换