SQL Server - 在多个记录中查找MAX和MIN的可能方法

时间:2013-05-01 16:49:24

标签: sql-server sql-server-2008

我是MSSQL的新手,并找到了一个优雅的方法来处理以下事项。

我有一个名为订单的表格,详情如下。

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。

3 个答案:

答案 0 :(得分:2)

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

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)

答案 1 :(得分: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 

答案 2 :(得分:0)

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

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

- DMG