Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL语句以获取给定日期范围的总计_Sql_Sql Server_Tsql - Fatal编程技术网

SQL语句以获取给定日期范围的总计

SQL语句以获取给定日期范围的总计,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试获取给定日期范围内每天的预订数量及其总价值 我的桌子看起来像: 我只能使用以下命令将BookingDateTime转换为日期: SELECT CONVERT(varchar(8), BookingDateTime, 112) as BookingDateOnly FROM [TaxiBookingOnline].[dbo].[Bookings] 我想要的是这样的东西: Date Bookings Value 2013-07-10 10 25

我正在尝试获取给定日期范围内每天的预订数量及其总价值

我的桌子看起来像: 我只能使用以下命令将BookingDateTime转换为日期:

SELECT CONVERT(varchar(8), BookingDateTime, 112) as BookingDateOnly
FROM   [TaxiBookingOnline].[dbo].[Bookings]
我想要的是这样的东西:

Date         Bookings   Value
2013-07-10   10         256.24
2013-07-11   12         321.44
2013-07-12   14         311.53
我觉得我应该给表格加上别名,将其连接到表格本身,然后使用“分组方式”,但我没能让它起作用

任何帮助都将不胜感激

谢谢。

怎么样

select
   cast(BookingDateTime as date) [Date],
   count(*) [Bookings],
   sum(BookingFare) [Value]
from t
group by cast(BookingDateTime as date)
怎么样

select
   cast(BookingDateTime as date) [Date],
   count(*) [Bookings],
   sum(BookingFare) [Value]
from t
group by cast(BookingDateTime as date)
分组依据
选择DATEADD(dd,0,DATEDIFF(dd,0,dateColumn))
,这将有效地获取
日期时间的日期部分,然后您可以根据需要对分组值使用
计数
求和

编辑:如果您使用的是SQL Server>=2008,您可以强制转换为(就像@AlexK所做的那样),否则您必须使用
DATEADD
对其进行破解

分组依据
选择DATEADD(dd,0,DATEDIFF(dd,0,dateColumn))
,这将有效地获取
日期时间的日期部分,然后您可以根据需要对分组值使用
计数
求和


编辑:如果您使用的是SQL Server>=2008,您可以强制转换为(就像@AlexK所做的那样),否则您必须使用
DATEADD

对其进行破解。下面是代码。用日期范围值替换日期1和日期2:

SELECT 
CONVERT(varchar(8), BookingDateTime, 112) as BookingDateOnly, BookingID   Bookings,Sum(BookingFare)Value  
FROM 
[TaxiBookingOnline].[dbo].[Bookings]
WHERE BookingDateTime Between 'Date1' and 'Date2'
GROUP BY
BookingDateTime,BookingID

下面是代码。用日期范围值替换日期1和日期2:

SELECT 
CONVERT(varchar(8), BookingDateTime, 112) as BookingDateOnly, BookingID   Bookings,Sum(BookingFare)Value  
FROM 
[TaxiBookingOnline].[dbo].[Bookings]
WHERE BookingDateTime Between 'Date1' and 'Date2'
GROUP BY
BookingDateTime,BookingID

难以置信的你让这看起来很容易!我真的必须花些时间来熟悉SQL。非常感谢@user975516请注意,这仅在SQL Server 2008及更高版本上有效。早期版本不支持日期类型。难以置信!你让这看起来很容易!我真的必须花些时间来熟悉SQL。非常感谢@user975516请注意,这仅在SQL Server 2008及更高版本上有效。早期版本不支持日期类型。非常感谢。了解DATEADD很有用。我是2012年的演员,所以我能够到目前为止的演员阵容。非常感谢。了解DATEADD很有用。我是2012年的演员,所以我可以到现在为止。
SELECT
    CONVERT(DATE,BookingDateTime) BookingDate,
    COUNT(BookingID) Bookings,
    SUM(BookingFare) BookingFare
FROM TaxiBookingOnline.dbo.Bookings