I have the following SQL statement in BD2 that returns the table below
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 = 'alerta@vomcoo.com'
AND c.SUBJECT = 'ALERTA - SLA estourado'
AND c.ID = '4355070'
However, I only need the smallest date and time found, highlighted in yellow in the printout
I filtered out the c.ID = '4355070' for testing only.
I have several IDs that have N lines, the idea would be to bring the smallest date/time value of each ID
I've already tried using GROUP BY , but the "To" column has different values
I need to get the first date/time of the first alert issued and "To" who it was sent to
Thanks
Returns only one (arbitrary) row for the same (ID, CREATEDATE).
SELECT
c.CREATEDATE AS "Data e Hora do Alerta"
, c.SENDFROM AS "Enviado Por"
, c.SENDTO AS "Para"
, c.SUBJECT AS "Assunto"
FROM
(
-- Your original SELECT statement emulation
SELECT
*
, ROW_NUMBER () OVER (PARTITION BY ID ORDER BY CREATEDATE) AS RN_
FROM
(
VALUES
(10, CURRENT TIMESTAMP , 'alerta@vomcoo.com', '11', 'ALERTA - SLA estourado')
, (10, CURRENT TIMESTAMP , 'alerta@vomcoo.com', '12', 'ALERTA - SLA estourado')
, (10, CURRENT TIMESTAMP + 1, 'alerta@vomcoo.com', '13', 'ALERTA - SLA estourado')
, (20, CURRENT TIMESTAMP , 'alerta@vomcoo.com', '21', 'ALERTA - SLA estourado')
, (20, CURRENT TIMESTAMP , 'alerta@vomcoo.com', '22', 'ALERTA - SLA estourado')
, (20, CURRENT TIMESTAMP + 1, 'alerta@vomcoo.com', '23', 'ALERTA - SLA estourado')
) c (ID, CREATEDATE, SENDFROM, SENDTO, SUBJECT)
WHERE c.SENDFROM = 'alerta@vomcoo.com'
AND c.SUBJECT = 'ALERTA - SLA estourado'
) c
WHERE RN_ = 1
Data e Hora do Alerta | Enviado Por | Para | Assunto |
---|---|---|---|
2023-09-25-10.51.23.804000 | alerta@vomcoo.com | 11 | ALERTA - SLA estourado |
2023-09-25-10.51.23.804000 | alerta@vomcoo.com | 21 | ALERTA - SLA estourado |