我有tbl_Orders
:
OrderNumber ProductCode Qty OrderDate SentDate
---------------------------------------------------------------
1000 A 100 2018-03-01 00:30:51 2018-03-02
1000 A 150 2018-03-12 04:31:54 2018-03-13
1000 B 150 2018-03-11 03:34:51 2018-03-14
1001 C 200 2018-03-01 00:30:51 2018-04-02
1002 D 200 2018-03-01 00:30:51 2018-04-15
我想写一个查询来获得如下结果:
OrderNumber Qty MAXOrderDate MAXSentDate
------------------------------------------------
1000 400 2018-03-12 04:31:54 2018-03-14
1001 200 2018-03-01 00:30:51 2018-04-02
1002 200 2018-03-01 00:30:51 2018-04-15
从我的新手角度看,我需要按OrderNumber'分组。但我不知道还有什么。第二个问题是" MAXOrderDate"或者" MAXSentDate"。我也不知道如何从日期中选择最大值。
我真的很感激任何帮助。
答案 0 :(得分:3)
简单,
应该是 - 只要您汇总数据,就不需要按该列分组(例如.. min,max,avg等,...所以你对groupby ordernumber的原始想法应该足够了)
Try the sql
select
tbl_Orders.ordernumber as OrderNumber
, sum(tbl_Orders.qty) as qty
,max(tbl_Orders.orderdate) as orderdate
,max(tbl_Orders.sentdate) as sentdate
from tbl_Orders
group by
tbl_Orders.ordernumber
答案 1 :(得分:0)
您必须在MAXOrderDate上加上Qty,max,在MAXSentDate上加上max,然后按OrderNumber进行分组,如:
SELECT OrderNumber, sum(Qty) As Qty, max(MAXOrderDate) As OrderDate, max(MAXSentDate) AS SentDate
FROM tbl_Orders (NOLOCK)
GROUP BY OrderNumber
我会使用NOLOCK来避免在高性能环境中阻止其他查询。请注意,NOLOCK可以引入尚未提交的事务中的结果记录。