首页 > 解决方案 > 是否有可以返回完整日期时间值的 MIN() 替代方法?

问题描述

我为我们的 ERP 系统在数据库中添加了一个表来跟踪与发货日期相关的信息,并且我需要识别第一个和最后一个日期时间条目。该表由我在另一个表上的触发器填充,并填充了更改写回数据库的日期时间。

SELECT     
TOP (100) PERCENT 
SalesOrder, 
MIN(NewShipDate) AS NewShipDate,
MAX(OldShipDate) AS OldShipDate
FROM dbo.ShipDateHistory
GROUP BY SalesOrder

正如预期的那样 MIN(NewShipDate) 返回一个最小值;问题是同一日期可能有多个条目,所以我试图找到一种方法让它从表中返回完整的最小日期时间。

我看到 min() 的结果只显示日期:

000000000172682 2019-01-29  NULL  

这对于日期是正确的,但是在同一日期的该订单的表格中有两个条目:
表格示例:

SalesOrder  OldShipDate NewShipDate LastOperator    ChangeDate  
000000000172682 NULL    2019-01-29  RJB 2019-01-29 09:41:13.150  
000000000172682 NULL    2019-01-29  RJB 2019-01-29 09:41:40.097  

理想情况下,我会看到完整的日期时间:

000000000172682 2019-01-29 09:41:13.150 NULL

标签: sqlsql-serverdatetimemin

解决方案


会不会是这个?

SELECT
 TOP (100) PERCENT SalesOrder, NewShipDate AS NewShipDate, OldShipDate AS OldShipDate FROM dbo.ShipDateHistory 
where NewShipDate = (Select min(NewShipDate) from dbo.ShipDateHistory group by SalesOrder)

推荐阅读