Diskuze: Select s MAX()
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Najoinuješ tabuľku samú na seba s tým, že PPV sa musí rovnať a platn_od v prvej tabuľke je menšia ako v tej ktorej ktorú pripájaš. Takže všetko sa ti pospája s tým že na pravej strane ti zostane nejaký PPV prázdny a vtedy vieš, že v tom prípade bola platn_od najväčšia. Inak tie názvy stĺpcov by bolo dobré asi troška pomeniť, či už dať to do angličtiny, nepísať jedno veľkými a iné malými písmenami a platn_od dať ako dátum
SELECT t.*
FROM DATRV t
LEFT OUTER JOIN DATRV tmp
ON t.PPV = tmp.PPV AND t.platn_od < tmp.platn_od
WHERE tmp.PPV IS NULL;
WITH tmp AS (
SELECT *, R_N = ROW_NUMBER() OVER (PARTITION BY oscis, oscis_vzt ORDER BY platn_od DESC)
FROM DATRV
WHERE platn_od < 20180901 AND kod < 108
)
SELECT STR(oscis) + oscis_vzt as PPV, prefix_jm, kod, castka, platn_od
FROM tmp
WHERE R_N = 1
;
Zobrazeno 3 zpráv z 3.