join na wycinku daty

0

Witam.Proszę o pomoc.
Mam jedną tabelę:
Data godzina minuty wolumen

2002-12-31 23 30 16439.30
2002-12-31 23 45 16371.30
2002-12-31 24 0 15990.40
2003-01-01 0 15 16016.50
2003-01-01 0 30 16097.20
2003-01-01 0 45 15802.80

plik zawiera rekordy od 2002 do 2013 z krokiem 15 minut.
Chce porównać wolumeny z różnych lat dla tych samych dni miesięcy godziny minuty.
Wynik:
Data godzina minuty wolumen2002 wolumen2003 wolumen 2004 ....... wolumen 2013
01-01 23 00 ......... ...... ..... ....
.
.
.
.

domyślam się, że trzeba użyć funkcji daty i zrobić join na samych miesiącach dniach godzinie i minucie pomijając rok. Dodatkowo chyba zagnieździć select. Próbowałem w ten sposób-bez skutku :

'select data, godzina, minuty, 2002, 2003
from (select data, godzina, minuty, wolumen as 2002
from 214 where data like '2002*')
inner join (select data, godzina, minuty, wolumen as 2003
from 214 where data like '2003*')
on month(data)=month(data) and on day(data)=day(data)
and on godzina=godzina and on minuty=minuty;'

z góry dziękuję za wsparcie. Pozdrawiam.

0

Coś w ten deseń (nie wiem jaka baza):

SELECT dzien, miesiac, godzina, minuty, Sum(CASE WHEN rok=2002 THEN wolumen END) wolumen2002, SUM(CASE WHEN rok=2003 THEN wolumen END) wolumen2003, ... FROM tabela GROUP BY dzien, miesiac, godzina, minuty
0

Dziękuję za odpowiedź tylko chyba nie tędy droga. Niewłaściwie określiłem rezultat.
Chcę otrzymać:

Data godzina minuty wolumen2002 wolumen2003 wolumen 2004 wolumen 2005

01-01 0 15 16016.50 16439.30 16439.30 16439.30 16439.30
01-01 0 30 16097.20 16439.30 16439.30 16439.30 16439.30
01-01 0 45 15802.80 16439.30 16439.30 16439.30 16439.30
...
...
...
12-31 23 30 16439.30 16439.30 16439.30 16439.30 16439.30
12-31 23 45 16371.30 16439.30 16439.30 16439.30 16439.30
12-31 24 0 15990.40 16439.30 16439.30 16439.30 16439.30

aby wiersze zaczynały się 01-01 a kończyły 31-12 natomiast w kolumnach będą kolejne wolumeny od wolumen2002 do wolumen2013.
Dodam, ze w tabeli data jest formie jak widać wcześniej tj. 2002-01-01 a nie osobne kolumny dzien,miesiac,rok ale to już szczegół bo to już wiem jak wyciągnąć przez datepart. Docelowo ma to posłużyć do wykresu jak w kolejnych latach dla tych samych miesięcy,dni,godzin,minut kształtował się wolumen
Mam nadzieję, że opisałem to wyraźnie. Pozdrawiam i jeszcze raz dzięki.

0

Brak mi doświadczenia w sql, jedyne co to pamiętam to kilka komend z zajęć. Nie wiem po co miałbym podać DDL i jak się go określa , nie wiem też po co miałbym podać nazwę tabeli skoro ją zaimportowałem z excela. Nie wiem - to pytam, nie wiem nadal - pytam dalej. Być może ktoś odpowie inaczej i wskaże błędy lub drogę, bo w tej chwili jestem w takim punkcie rozumienia owego problemu. Nie mniej jednak dzięki za chęci. pozdrawiam.

0

jest to mysql w accessie 2007, oczywiście próbowałem sposób który podałeś . Niestety nie poszło. Próbuje dalej bo chyba jestem blisko i brakuje niewiele.

0

jest to mysql w accessie 2007, oczywiście próbowałem sposób który podałeś . Niestety nie poszło. Próbuje dalej bo chyba jestem blisko i brakuje niewiele.

0

Skoro to Access, to nie miało prawa pójść - tam chyba nie ma CASE WHEN... trzeba to zastąpić IIF().
Poza tym Access ma kwerendy krzyżowe. Sprawdź je

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