(PL/SQL) Oracle10i - Select porownujacy daty
Mariusz S - 12-11-2006 00:37
(PL/SQL) Oracle10i - Select porownujacy daty
Witajcie Mama taki problem ( w sumie pewnie prosty) ale cos nie moge wpasc na rozwiazanie.
Jest sobie tabela 'umowy' o strukturze id,idpracownika,nazwaumowy,data_od,data_do
Dane wprowadzone sa w taki sposob ze dla danego idpracownika daty umow nie pokrywaja sie ani w zaden sposob nie zazebiaja w sensie zadna umowa dla daego pracownika nie moze konczyc sie ani zaczynac w tym samym dniu co inna umowa. Przyklad: 1,100,'UMOWA PIERWSZA KOWALSKI',01-01-2006,13-01-2006 2,101,'UMOWA PIERWSZA WISNIEWSKI'02-02-2006,03-02-2006 3,100,'UMOWA DRUGA KOWALSKI',15-01-2006,31-01-2006 4,101,'UMOWA DRUGA WISNIEWSKI',04-02-2006,25-02-2006 5,101,'UMOWA TRZECIA WISNIEWSKI',04-03-2006,05-03-2006
Zalezy mi na skonstruowaniu takiego selecta ktory z w.w tabeli wyciagnie tylko takie umowy ( pomijajac pierwsza dla kazdego pracownika) ktore maja przynajmniej dzien przerwy miedzy umowami czyli roznica miedzy data_od kolejnej umowu a data_do umowy wczesniejszej musi byc wieksza niz 0
Efekt tego zapytania : powinien wyswietlic rekordy o id 3 i 5.
Ewentualnie interesowalby mnie uproszczony wariant tego zapytania gdzie mamy juz zawezenie do tego samego idpracownika czyli nasza sortowana tabela wyglada np tak : 2,101,'UMOWA PIERWSZA WISNIEWSKI'02-02-2006,03-02-2006 4,101,'UMOWA DRUGA WISNIEWSKI',04-02-2006,25-02-2006 5,101,'UMOWA TRZECIA WISNIEWSKI',04-03-2006,05-03-2006
i zapytanie powinno wyswietlic rekord id 5
Prosilbym bardzo o pomoc i z gory dziekuje. Pozdrowienia MS
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Lucyna Witkowska - 12-11-2006 00:37
Mariusz S <smoline@nospam.gazeta.pl> napisał: > Zalezy mi na skonstruowaniu takiego selecta ktory z w.w tabeli wyciagnie tylko > takie umowy ( pomijajac pierwsza dla kazdego pracownika) ktore maja > przynajmniej dzien przerwy miedzy umowami czyli roznica miedzy data_od > kolejnej umowu a data_do umowy wczesniejszej musi byc wieksza niz 0
> Efekt tego zapytania : > powinien wyswietlic rekordy o id 3 i 5.
Banał ;-)
select * from ( select id, idpracownika, data_od, data_do, data_od-lag(data_do) over (partition by idpracownika order by data_od) odstep from umowy ) where odstep>1;
Pozdrowienia, LW
Mariusz S - 12-11-2006 00:37
Serdeczne dzieki. Pozdr,MS
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle 19g +Insert +Insert +Insert...
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[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?=
jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?=
[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"..?=
zanotowane.pldoc.pisz.plpdf.pisz.planette.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 |
|