DB2 - Select z rekordów o danym id z maksymalną datą

Odpowiedz Nowy wątek
2019-02-13 19:10
0

Witajcie,
Niestety bardzo rzadko zdarza mi się pisać zapytania SQL-owe stąd mam małe problemy z nawet najprostszymi dlatego chciałem prosić Was o pomoc. Mam sobie dwie tabele. Jedna z produktami, druga ze słownikami. Muszę zrobić selecta produktów z pierwszej tablicy tylko zamiast kodów waluty pobrać ich nazwy z drugiej tablicy i z tym problemu nie ma. Ale jest jeszcze jeden warunek. W tabeli z produktami mam daty od kiedy one obowiązują. Do każdego produktu przypisany jest też kod grupy. I teraz muszę dodatkowo zrobić selecta produktu który ma najaktualniejszą datę w danej grupie. Czyli przykładowo niech tablica wygląda tak:
ID, NAZWA, DATA
1, AAA, '16-01-2017;'
1, AAA, '01-01-2018;'
2, AAA, '12-01-2016;'
2, AAA, '01-01-2017;'
1, AAA, '01-04-2019;'
3, AAA, '03-01-2017;'

Mój select powinien zwrócić 3 wyniki czyli:
1, AAA, '01-04-2019;'
2, AAA, '01-01-2017;'
3, AAA, '03-01-2017;'

Zrobiłem coś takiego:

SELECT
    t.GROUP_ID AS groupId,
    t.PRODUCT AS product,
    t.AMOUNT AS amount,
    t.STATUS AS status,
    t.CURRENCY_CDE AS currencyCde,
    tm.CURRENCY AS currency
FROM
    schema.PRODUCT t,
    schema.DICTIONARY tm
    WHERE
    t.PRODUCT = 'AAA'
    AND tm.CODE = 'WALUTA'
    AND tm.CURRENCY_CDE = t.CURRENCY_CDE
    AND START_DTE = (SELECT max(START_DTE) FROM schema.PRODUCT AS pd WHERE t.ID = pd.ID)

ale niestety porażka. Zwraca mi tylko jeden wiersz. Jak usunę tego AND-a na końcu to zwróci mi wszystkie produktu o danej nazwie. Podpowiedzcie jak z tego wyselectować tylko te z najnowszą datą?

Pozostało 580 znaków

2019-02-13 20:02
0

select id, nazwa, max(data) from tabela group by id, nazwa

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0