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 = '[email protected]'
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 , '[email protected]', '11', 'ALERTA - SLA estourado')
, (10, CURRENT TIMESTAMP , '[email protected]', '12', 'ALERTA - SLA estourado')
, (10, CURRENT TIMESTAMP + 1, '[email protected]', '13', 'ALERTA - SLA estourado')
, (20, CURRENT TIMESTAMP , '[email protected]', '21', 'ALERTA - SLA estourado')
, (20, CURRENT TIMESTAMP , '[email protected]', '22', 'ALERTA - SLA estourado')
, (20, CURRENT TIMESTAMP + 1, '[email protected]', '23', 'ALERTA - SLA estourado')
) c (ID, CREATEDATE, SENDFROM, SENDTO, SUBJECT)
WHERE c.SENDFROM = '[email protected]'
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 | [email protected] | 11 | ALERTA - SLA estourado |
2023-09-25-10.51.23.804000 | [email protected] | 21 | ALERTA - SLA estourado |