Возьмите только одну запись на основе столбца в запросе. DB2

У меня есть следующий запрос:

SELECT
    a.datoA AS datoUno,
    a.datoB AS datoDos,
    a.datoC as datoTres,
    sv.fecha AS fechaUno,

FROM
    tableUno a
 INNER JOIN tableDos sv ON
    sv.datoId = a.datoId

WHERE
    a.STATUS = 1
GROUP BY
    a.datoA,
    a.datoB,
    a.datoC,
    sv.fecha 
ORDER BY
    to_number(a.datoA) WITH ur

Он выбрасывает меня:

datoUno     | datoDos          |datoTres|  fechaUno
------------|------------------|------- |--------------------------
4           |1177525           |       2|2017-05-06-13.50.00.000000
4           |1177525           |       2|2017-05-08-05.48.00.000000
4           |1177525           |       2|2017-05-08-14.45.00.000000
5           |1177526           |       2|2017-05-08-14.45.00.000000

Я хочу, чтобы он не повторял мне данные, то есть он показывает мне только запись DatoUno в этом случае он показывает мне больше одного по датам, я хочу, чтобы он принимал только самую последнюю дату.

То есть:

datoUno     | datoDos          |datoTres|  fechaUno
------------|------------------|------- |--------------------------
4           |1177525           |       2|2017-05-08-14.45.00.000000
5           |1177526           |       2|2017-05-08-14.45.00.000000

Я попробовал DISTINCT для данных, но у меня это не сработало. Даты, которые я знаю, я должен выполнить заказ, но я не знаю, как я мог бы это сделать.

Если бы вы могли мне помочь.

0
задан 27.11.2019, 20:28
2 ответа

Podr¦-схвати брать decisi¦n, 2, 3 и 4 использовать колонны с одним MAX или MIN и группировать только из-за колонны 1.

SELECT
    a.datoA AS datoUno,
    MAX(a.datoB AS datoDos),
    MAX(a.datoC as datoTres),
    MAX(sv.fecha AS fechaUno)

FROM
    tableUno a
 INNER JOIN tableDos sv ON
    sv.datoId = a.datoId

WHERE
    a.STATUS = 1
GROUP BY
    a.datoA
 ORDER BY
    to_number(a.datoA) WITH ur

Отдельно обрати внимание, что перед FROM тебе хватает одной ,

1
ответ дан 01.12.2019, 10:45
  • 1
    Продолжая твою подсказку оно я функционирует, спасибо. – YemisiSCG 28.11.2019, 16:51

Podr¦-схвати делать что-то как:

SELECT
    a.datoA AS datoUno,
    a.datoB AS datoDos,
    a.datoC as datoTres,
    sv.fecha AS fechaUno
FROM
    tableUno a
INNER JOIN (
    SELECT datoId, max(fecha) 
    FROM tableDos 
    GROUP BY datoID) sv
ON
    sv.datoId = a.datoId
WHERE
    a.STATUS = 1
0
ответ дан 01.12.2019, 10:45