如何在SQL中选择最旧的日期?

时间:2010-09-01 09:52:25

标签: c# sql mysql

我有这个sql语句:

SELECT TOP (5) PartNumber,SerialNumber,MIN(WIP_CompletionDate) as dates
FROM dbo.FG_FILLIN where 
             Status='FG-FRESH'
             and WIP_Status<>'CMPL01' 
             and PartNumber='P02-070161-10211-C100'
            GROUP BY PartNumber,WIP_CompletionDate,SerialNumber

结果:

PartNumber                  SerialNumber               dates
P02-070161-10211-C100   21524100046CA8001806    2010-08-08 06:59:23.183
P02-070161-10211-C100   21524100046CA8001807    2010-08-07 16:26:19.477
P02-070161-10211-C100   21524100046CA8001808    2010-08-07 16:30:20.990
P02-070161-10211-C100   21524100046CA8001810    2010-08-14 13:12:58.827
P02-070161-10211-C100   21524100046CA8001811    2010-08-09 06:58:01.263

现在如果我选择top(2)这是我的结果。

P02-070161-10211-C100   21524100046CA8001806    2010-08-08 06:59:23.183
P02-070161-10211-C100   21524100046CA8001807    2010-08-07 16:26:19.477

但是应该是我的结果将是这样的。

P02-070161-10211-C100 21524100046CA8001808  2010-08-07 16:26:19.477
P02-070161-10211-C100 21524100046CA8001808  2010-08-07 16:30:20.990

有什么建议吗?谢谢你的问候

4 个答案:

答案 0 :(得分:3)

尝试将“ORDER BY WIP_CompletionDate ASC”添加到您的查询中,如下所示:

SELECT TOP (5) PartNumber,SerialNumber, WIP_CompletionDate 
FROM dbo.FG_FILLIN 
WHERE Status='FG-FRESH' AND WIP_Status<>'CMPL01' AND PartNumber='P02-070161-10211-C100' 
GROUP BY PartNumber, WIP_CompletionDate, SerialNumber 
ORDER BY WIP_CompletionDate ASC;

答案 1 :(得分:1)

在查询末尾添加ORDER BY WIP_CompletionDate ASC子句。它将按日期排序查询,并选择前两个,因此是最早的。

答案 2 :(得分:1)

其他答案几乎是正确的,确切的方式是:

SELECT TOP (5) PartNumber,SerialNumber,MIN(WIP_CompletionDate) as dates
FROM dbo.FG_FILLIN
WHERE Status='FG-FRESH' and WIP_Status<>'CMPL01' and PartNumber='P02-070161-10211-C100'
GROUP BY PartNumber,WIP_CompletionDate,SerialNumber
ORDER BY dates

所以ORDER BY 日期,并且无需明确指定它是升序。

答案 3 :(得分:0)

按日期使用订单Asc和您的查询,