![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ostatnio nie mogę sobie poradzić z poniższym zagadnieniem.
Mam tabelę kursy i w niej dzienne wyceny aktywów. Potrzebuję wyciągnąć z niej wyceny z ostatniego dnia miesiąca, ale ten dzień nie zawsze wypada w kalendarzowym końcu miesiąca. Następujące zapytanie wyławia taki rekord bez problemu:
Teraz powstaje pytanie jak to zrobić, aby wyłowić rekordy z zakresu '2007-01' do '2010-01' biorąc pod uwagę powyższe założenia. Oczywiście mogę zrobić wielokrotne UNION (zwiększając miesiąc), ale może jest jakiś lepszy sposób, który zrobi jakąś pętlę zapytań z dodawaniem miesiąca?
Będę wdzięczny za propozycje. UPDATE Kolumna to date, ale mogę zmienić, gdyby to coś pomogło. Pozdrawiam, Piotr Zaniewicz Ten post edytował peter_z 28.03.2010, 16:54:24 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Jakiego typu jest kolumna update-date ?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Kolumna to date.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Można zacząć od tego:
Kod SELECT t1.* FROM kursy AS t1
CROSS JOIN (SELECT name, MAX(`update-date`) AS `update-date` FROM kursy GROUP BY name, MONTH(`update-date`)) AS t2 USING(name, `update-date`); |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 26.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ekstra, działa wyśmienicie.
Dodałem jeszcze grupowanie wg poszczególnych lat, bo tak wyświetlał tylko 12 miesięcy. A tak wygląda działający SQL, gdyby ktoś potrzebował:
Dziękuję serdecznie za pomoc i pozdrawiam, Piotr Zaniewicz |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:21 |