[Oracle] numerowanie wierszy według danej wartości
Adam - 13-11-2006 00:44
[Oracle] numerowanie wierszy według danej wartości
Witam
Czy ktoś może wie jak skonstruować zapytanie, które dla tabeli np: id, nazwa, jezyk, autor wypisze mi dane np: numer_kolejny 1 a pl aa 1 2 a pl bb 2 3 a pl cc 3 4 b fr dd 1 5 b pl ee 2 6 c cr ff 1
Chodzi mi o to jak uzyskać odpowiednie numerowanie dla kolumy 'numer_kolejny' dla tych samych wartości dla danej kolumny po której sortuję (w powyższym przykładzie kolumna 'nazwa'). Nie używam group by, tylko sortowania po danej kolumnie.
Pozdrawiam, Adam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
sebek - 13-11-2006 00:44
Spróbuj w ten sposób:
select id, nazwa, jezyk, autor, row_number()over(partition by nazwa order by id)nr_kolejny from test
Pozdrawiam, Sebastian
Adam - 13-11-2006 00:44
sebek <niklaus@poczta.onet.pl> napisał(a):
> Spróbuj w ten sposób: > > select id, nazwa, jezyk, autor, row_number()over(partition by nazwa order by > id)nr_kolejny from test >
Yo Man! Jesteś wielki!! Dzięki wielkie!
Pozdrawiam, Adam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
bart - 13-11-2006 00:44
bardziej uniwersalne, bo bedzie dzialac bez funkcji specyficznych dla roznych baz...
SELECT id, nazwa, jezyk, autor, (select count(*) from tabela b where b.id<=a.id and b.nazwa=a.nazwa) as numer_kolejny from tabela a;
Adam - 13-11-2006 00:44
bart <bartoleq@wp.pl> napisał(a):
> bardziej uniwersalne, bo bedzie dzialac bez funkcji specyficznych dla > roznych baz... > > SELECT id, nazwa, jezyk, autor, > (select count(*) from tabela b where b.id<=a.id and b.nazwa=a.nazwa) > as numer_kolejny > from tabela a; > Tylko sprawa się komplikuje jak masz złączenia na 7 tabelach....
Pozdrawiam, Adam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
Adam - 13-11-2006 00:44
sebek <niklaus@poczta.onet.pl> napisał(a):
> Spróbuj w ten sposób: > > select id, nazwa, jezyk, autor, row_number()over(partition by nazwa order by > id)nr_kolejny from test > > >
Hmmm - w pewnych przypadkach te numerki nie są posortowane, dodałem sortowanie po tej kolumnie jednak zastanawia mnie to czemu to nie jest posortowane :|.
Pozdrawiam, Adam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
bart - 13-11-2006 00:44
Adam napisał(a): > bart <bartoleq@wp.pl> napisał(a): > > > bardziej uniwersalne, bo bedzie dzialac bez funkcji specyficznych dla > > roznych baz... > > > > SELECT id, nazwa, jezyk, autor, > > (select count(*) from tabela b where b.id<=a.id and b.nazwa=a.nazwa) > > as numer_kolejny > > from tabela a; > > > Tylko sprawa się komplikuje jak masz złączenia na 7 tabelach.... >
w twoim pierwszym poscie bylo o jednej tabeli .... wiec nie rozumiem tej uwagi... uniwersalnosc rozumialem ze nie kazda baza mam row_number i ta cala reszte dziwnych rozszerzen standardu...
bartek.
Michał Kuratczyk - 13-11-2006 00:44
Adam wrote: >> select id, nazwa, jezyk, autor, row_number()over(partition by nazwa order >> by id)nr_kolejny from test > Hmmm - w pewnych przypadkach te numerki nie są posortowane, dodałem > sortowanie po tej kolumnie jednak zastanawia mnie to czemu to nie jest > posortowane :|. A nie dlatego, że w zapytaniu jest "order by id" zamiast czegoś bardziej przewidywalnego (np. order by autor)?
-- Michał Kuratczyk
Adam - 13-11-2006 00:44
Michał Kuratczyk <kura@lj.pl> napisał(a):
> A nie dlatego, że w zapytaniu jest "order by id" zamiast czegoś bardziej > przewidywalnego (np. order by autor)? > Tak - to jest klucz do sukcesu.
Pozdrawiam, Adam
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?=
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?=
[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.plponland.htw.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 |
|