DB2 - 返回 Select 中最小的日期时间

问题描述 投票:0回答:1

我在 BD2 中有以下 SQL 语句,返回下表

SELECT
c.CREATEDATE AS "Data e Hora do Alerta"
,c.SENDFROM  AS "Enviado Por"   
,c.SENDTO AS "Para"
,c.SUBJECT AS "Assunto"
FROM  M.LOG c
WHERE c.SENDFROM  = '[email protected]' 
AND c.SUBJECT  = 'ALERTA - SLA estourado'
AND c.ID  = '4355070'

enter image description here

但是,我只需要找到的最小日期和时间,在打印输出中以黄色突出显示

我过滤掉了 c.ID = '4355070' 仅用于测试。

我有几个有 N 行的 ID,想法是带来每个 ID 的最小日期/时间值

我已经尝试使用 GROUP BY ,但“To”列具有不同的值

我需要获取第一个警报发出的第一个日期/时间以及“收件人”发送给谁

谢谢

sql db2
1个回答
0
投票

您可以使用子查询,但如果每个 ID 都具有相同的最小日期,则可以返回多个条目:

SELECT c.CREATEDATE AS "Data e Hora do Alerta",
c.SENDFROM AS "Enviado Por",
c.SENDTO AS "Para",
c.SUBJECT AS "Assunto" 
FROM M.LOG c
WHERE c.CREATEDATE = 
   (SELECT MIN(c2.CREATEDATE) FROM M.LOG c2 WHERE c2.ID = c.ID);

Group by 仍然是你的朋友。您可能需要更改 SELECT 中的哪些列具有聚合函数,例如最大值(),最小值(),计数()。

SELECT MIN(c.CREATEDATE) AS "Data e Hora do Alerta",
c.SENDFROM AS "Enviado Por",
c.SENDTO AS "Para",
c.SUBJECT AS "Assunto" 
FROM M.LOG c
GROUP BY c.ID
ORDER BY MIN(c.CREATEDATE);

您可能需要慢慢添加列并排除故障。

SELECT c.ID, MIN(c.CREATEDATE)
FROM M.LOG c
GROUP BY c.ID
ORDER BY MIN(c.CREATEDATE) DESC;
© www.soinside.com 2019 - 2024. All rights reserved.