SQL Zapytanie o najmniejszą datę

0

Witam,

Mam tabelę z następującymi danymi:
Kod, Data, Ilosc
Chcę wybrać tylko najmniejsze daty i przypisane do nich ilości dla każdego kodu. Niestety to co robię grupuje mi także po ilości, więc pokazują się wszystkie daty z wszystkimi ilościami. Bardzo proszę o podpowiedź.

0

A co jakby data się powtarzała? To jaki ma być wynik? Bo twój problem polega na tym że wyliczenie agregatu, w tym przypadku min zwraca wartość a nie rekord, bo rekordów z tą wartością może być kilka. Możesz zawsze zrobić podzapytanie które wybierze z wyjściowej tabeli ilość dla pasujących par (kod, minimalna data).

0

Pokaż to zapytanie co napisałeś..to zobaczymy co da sie zrobić.

0

Akurat wiem, że data nigdy się nie powtórzy... ale jak wpisuję takiego selecta:
select kod, min(data), ilosc
to jeśli dla danego kodu jest kilka dat i kilka różnych ilości, to wyświetla wszystkie ilości.

0

I taki kod jaki podałeś ci działa? Bez grupowania? Na jakim szbd niby?

0

Mam takie dane:
kod, data, ilosc
1, 2015-01-01, 20
1, 2015-01-15, 55
2, 2015-01-30, 33

select kod, min(data) ilosc
from tabela

to pokazuje mi wszystkie rekordy, a ja chcę, żeby zgodnie z założeniami pokazało te rekordy, gdzie data jest najmniejsza dla danego kodu (czyli tylko 1 i 3 rekord)

Tak działa, ale nawet jak wpiszę grupowanie, to wynik jest ten sam:
select kod, min(data) ilosc
from tabela
group by kod, ilosc

Dodam, że jak wpisuję takiego selecta
select kod, min(data)
from tabela
group by kod

czyli nie wyświetlam ilości, to działa prawidłowo.

Zamykam wątek, rozwiązanie już mam :)

0
select kod, data, ilosc from tab where data in (select min(data) from tab);

edit z uwzględnieniem kodu

select kod, data, ilosc from tab where (data, kod) = (select min(data), kod from tab group by kod);
0

Nie wiem jaki masz silnik (serwer) ale na PLSQL'u to powinno Ci zadziałać

select tab.kod,tab.data,tab.ilosc
from tabela tab
join (select kod,min(data) as data
       from tabela
       group by kod) grp on tab.kod=grp.kod and tab.data=grp.data

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