[oracle] czy da się ułożyć zapytanie realizujące....
Adam - 27-08-2006 00:21
[oracle] czy da się ułożyć zapytanie realizujące....
Witam
Potrzebuję napisać zapytanie, lub jeśli to niemożliwe funkcję pl/sql, która zwróci uporządkowaną listę okresów (początkowych dat, np 06/08/01) o zadanej parametrem długości miesięcy, w których pojawił się co najmniej jeden wpis w tabeli o strukturze: id number primary key, some_date timestamp.
Wydaje mi się, że zapytania nie da się ułożyć więc może macie jakieś sugestie na funkcję?
Pozdrawiam, Adam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Sławomir Szyszło - 28-08-2006 00:53
Dnia Mon, 21 Aug 2006 21:15:35 +0000 (UTC), " Adam" <adamzrk.WYTNIJ@gazeta.pl> wklepał(-a):
>Witam > > Potrzebuję napisać zapytanie, lub jeśli to niemożliwe funkcję pl/sql, która >zwróci uporządkowaną listę okresów (początkowych dat, np 06/08/01) o zadanej >parametrem długości miesięcy, w których pojawił się co najmniej jeden wpis w >tabeli o strukturze: > id number primary key, > some_date timestamp.
Czy dobrze rozumiem - załóżmy np. okresy kwartalne i dane dla uproszczenia:
7, 2006-02-10 1, 2006-02-10 4, 2006-04-07 5, 2006-10-11 2, 2006-10-15 9, 2006-11-15
A w wyniku:
2006-01-01 2006-04-01 2006-10-01
Czy o to chodzi?
>Wydaje mi się, że zapytania nie da się ułożyć więc może macie jakieś sugestie >na funkcję?
FUNCTION daj_okres (p_data in date) RETURN DATE IS -- data startowa, od ktorej liczy sie okresy d_startdate date := to_date('2005-01-01', 'yyyy-mm-dd'); n_ile_miesiecy number(4) := 3; -- długość okresu w miesiącach n_roznica_miesiecy number; -- różnica między p_data a d_startdate w m-c n_nr_okresu number; -- nr okresu dla p_data BEGIN -- różnica w miesiącach między podaną datą a startową n_roznica_miesiecy := MONTHS_BETWEEN(p_data, d_startdate); -- nr okresu = (liczba pełnych miesięcy / długość okresu) nr_okresu := FLOOR(FLOOR(n_roznica_miesiecy) / n_ile_miesiecy); RETURN ADD_MONTHS(d_startdate, nr_okresu * n_ile_miesiecy); END;
Potem to chyba będzie:
SELECT DISTINCT daj_okres(some_date) FROM TABELA;
A timestampa to już sam obsłuż. :) -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle 19g +Insert +Insert +Insert...
[Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?=
=?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?=
[oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?=
[oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?=
MSSQL Express czy Oracle Express
=?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?=
=?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?=
=?iso-8859-2?q?[oracle_10g]_jak_da=E6_grant_do_gv$=2E=2E=2E=2E_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.plets2.xlx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|