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ą?