1

我有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

从我的新手的角度来看,我似乎需要“按订单号分组”。但我不确定还有什么。第二个问题是“MAXOrderDate”或“MAXSentDate”。我也不知道如何从日期中选择最大值。

我真的很感激任何帮助。

4

2 回答 2

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
于 2018-03-26T22:20:55.297 回答
0

您必须对 MAXOrderDate 上的 Qty、最大值和 MAXSentDate 上的最大值求和,然后按 OrderNumber 分组,例如:

SELECT OrderNumber, sum(Qty) As Qty, max(MAXOrderDate) As OrderDate, max(MAXSentDate) AS SentDate 
FROM tbl_Orders (NOLOCK) 
GROUP BY OrderNumber

我会使用 NOLOCK 来避免在高性能环境中阻止其他查询。请注意,NOLOCK 可能会引入尚未提交的事务中的结果记录。

于 2018-03-26T22:31:25.673 回答