我是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。
答案 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