2

我是 MSSQL 的新手,正在寻找一种优雅的方式来处理以下内容。

我有一个名为Order的表,详细信息如下。

orderID       orderTime                   quantity         total
***************************************************************** 
1             4/1/2013 06:00:00 AM        3                300  
2             4/1/2013 09:00:00 AM        1                100  
3             4/2/2013 07:33:00 PM        2                265  
4             4/3/2013 04:15:00 PM        1                65
*****************************************************************

是否可以给出以下输出?

orderDate     total
*******************
4/1/2013      400   
4/3/2013      65    

我试图将 orderTime 转换为字符串并进一步分组,但不知何故我失败了。我仍在努力寻找实现它的方法。

我正在使用 SQL Server 2008。

4

3 回答 3

2

当然 - 您可以将 orderTime 转换为日期数据类型并按此分组。您的输出似乎表明您想要一个 SUM 而不是 MIn/MAX,但您可以使用适当的聚合进行调整:

select 
  convert(date, orderTime) as 'orderDate', 
  sum(total) as 'total', 
  min(total) as 'Min', 
  max(total) as 'Max'
from Order
group by convert(date, orderTime)
order by convert(date, orderTime)
于 2013-05-01T16:52:51.090 回答
1

您可以将 orderTime 转换为 Date 数据类型:

SELECT orderDate = CONVERT(Date, orderTime)
    , total = SUM(total)
FROM dbo.Order (NOLOCK)
GROUP BY CONVERT(Date, orderTime)
ORDER BY orderDate;

这将返回以下输出:

orderDate     total
*******************
4/1/2013      400   
4/2/2013      265
4/3/2013      65 
于 2013-05-01T16:52:04.400 回答
0

这取决于 orderTime 的数据类型。您可以将其转换为日期字段(没有时间):

 SELECT CAST(orderTime AS DATE), SUM(total) 
 FROM Table 
 GROUP by CAST(orderTime AS DATE);

--dmg

于 2013-05-01T16:56:00.173 回答