You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SQL Server中带GROUP BY与日期列的SELECT查询需求

按订单号聚合统计的SQL查询方案

你需要对tbl_Orders表按订单号分组,汇总每个订单的总购买数量,同时提取该订单下最晚的下单日期和最晚的发货日期对吧?先确认下你的源表结构和数据:

源表结构与数据

OrderNumberProductCodeQtyOrderDateSentDate
1000A1002018-03-01 00:30:512018-03-02
1000A1502018-03-12 04:31:542018-03-13
1000B1502018-03-11 03:34:512018-03-14
1001C2002018-03-01 00:30:512018-04-02
1002D2002018-03-01 00:30:512018-04-15

实现查询的SQL语句

你可以使用GROUP BY子句按OrderNumber分组,配合聚合函数SUM()计算总数量,MAX()获取日期的最大值:

SELECT 
    OrderNumber,
    SUM(Qty) AS Qty,
    MAX(OrderDate) AS MAXOrderDate,
    MAX(SentDate) AS MAXSentDate
FROM tbl_Orders
GROUP BY OrderNumber;

查询结果说明

执行上述语句后,会得到你需要的格式结果:

OrderNumberQtyMAXOrderDateMAXSentDate
10004002018-03-12 04:31:542018-03-14
10012002018-03-01 00:30:512018-04-02
10022002018-03-01 00:30:512018-04-15

这里的逻辑很直观:

  • SUM(Qty)把同一订单号下的所有数量相加,得到总订货量
  • MAX(OrderDate)找出该订单下所有记录里最新的下单时间
  • MAX(SentDate)找出该订单下所有记录里最新的发货时间

内容的提问来源于stack exchange,提问作者damianm

火山引擎 最新活动