2013-05-01 28 views
2

我是MSSQL的新手,正在寻找一种优雅的方式处理以下事情。SQL Server - 在多个记录中查找MAX和MIN的可能方法

我有一张叫的表格,订购,具体如下。

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的

回答

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) 
+0

你让我很快乐轻松了很多,感谢德里克! – mightyheptagon 2013-05-02 10:40:07

1

您可以转换orderTime的日期数据类型:

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 
0

它取决于orderTime的数据类型。你可以将其转换为一个日期字段(无时间):

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

--dmg