Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Select s MAX()

Aktivity
Avatar
petr.chatar.anton:27.8.2018 12:02

Ahoj,
mám podobnou tabulku:

PPV prefix kod castka platn_od
16d OSTEN 107 21000 20100101
105a ANTO 107 27000 20120101
105a ANTO 107 29000 20150701
118a WANN 107 15000 20100101
118a WANN 105 18000 20100301
118a WANN 107 28000 20180101
118a WANN 107 29500 20180801
3250a JOUZ 107 31000 20170101
3367c LAVI 107 30500 20170101

Je výsledkem dotazu:

select str(oscis) + oscis_vzt as PPV,prefix_jm, kod, castka, platn_od
from DATRV
where platn_od < 20180901 and kod < 108

Potřeboval bych z této tabulky vybrat vždy ten záznam pro skupinu stejných PPV, kde je nejvyšší platn_od .
Děkuju za pomoc.
 
Odpovědět
27.8.2018 12:02
Avatar
Odpovídá na petr.chatar.anton
Matúš Olejník:27.8.2018 13:06

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;
Nahoru Odpovědět
27.8.2018 13:06
/* I am not sure why this works but it fixes the problem */
Avatar
plelovsky
Člen
Avatar
plelovsky:28.8.2018 13:34
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
;
 
Nahoru Odpovědět
28.8.2018 13:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.