Jakie zapytanie aby uzyskać brakujące rekordy?
xpan - 13-09-2006 02:07
Jakie zapytanie aby uzyskać brakujące rekordy?
Witam, Zastanawiam się jak uzyskać kwerendę która wyświetlając zawartość tabeli wyświetli mi rekordy z brakującymi miesiącami.
Przykład Jest tabela o nazwie TABELA z kolumnami i zawartością ROK MIESIAC NAZWA ILOSC 2005 1 X 100 2005 2 X 110 2005 3 X 120 2005 1 Y 9 2005 2 Y 11 i teraz ja chce utworzyć kwerendę która mi zwróci 2005 1 X 100 2005 2 X 110 2005 3 X 120 2005 4 X 0 2005 5 X 0 2005 6 X 0 2005 7 X 0 2005 8 X 0 2005 9 X 0 2005 10 X 0 2005 11 X 0 2005 12 X 0 2005 1 Y 9 2005 2 Y 11 2005 3 Y 0 2005 4 Y 0 2005 5 Y 0 2005 6 Y 0 2005 7 Y 0 2005 8 Y 0 2005 9 Y 0 2005 10 Y 0 2005 11 Y 0 2005 12 Y 0
Z góry dzięki za wskazówki.
-- xpan
-- Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Michał Kuratczyk - 13-09-2006 02:07
xpan wrote: > Zastanawiam się jak uzyskać kwerendę która wyświetlając zawartość tabeli > wyświetli mi rekordy z brakującymi miesiącami.
Nie napisałeś jaka baza, więc zrobiłem na swojej (Oracle) - jeśli używasz innej, to i tak powinno Cię to nakierować na rozwiązanie. Pewnie można prościej, ale tak mi przyszło do głowy na szybko:
Dane:
SQL> select * from tabela;
ROK MIESIAC NAZWA ILOSC ---------- ---------- ------------ ---------- 2005 1 X 100 2005 2 X 110 2005 3 X 120 2005 1 Y 9 2005 2 Y 11
Wynik:
SQL> with lata as (select distinct rok from tabela), 2 miesiace as (select rownum miesiac from all_objects where rownum <= 12), 3 nazwy as (select distinct nazwa from tabela) 4 select x.rok, x.miesiac, x.nazwa, nvl(t.ilosc, 0) ilosc 5 from (select * from lata, miesiace, nazwy) x 6 left outer join tabela t on x.rok=t.rok and x.miesiac=t.miesiac and x.nazwa = t.nazwa 7 order by x.nazwa, x.rok, x.miesiac;
ROK MIESIAC NAZWA ILOSC ---------- ---------- ------------ ---------- 2005 1 X 100 2005 2 X 110 2005 3 X 120 2005 4 X 0 2005 5 X 0 2005 6 X 0 2005 7 X 0 2005 8 X 0 2005 9 X 0 2005 10 X 0 2005 11 X 0 2005 12 X 0 2005 1 Y 9 2005 2 Y 11 2005 3 Y 0 2005 4 Y 0 2005 5 Y 0 2005 6 Y 0 2005 7 Y 0 2005 8 Y 0 2005 9 Y 0 2005 10 Y 0 2005 11 Y 0 2005 12 Y 0
24 rows selected.
-- Michał Kuratczyk
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?=
=?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?=
phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?=
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
[oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?=
[MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?=
mecze sie i mecze i nic - zapytanie czesciowe
[sql][pgsql] zapytanie sql
zapytanie do =?ISO-8859-2?Q?dw=F3ch_tabel_z_limitem_wier?==?ISO-8859-2?Q?szy?=
zanotowane.pldoc.pisz.plpdf.pisz.plczterowers.keep.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 |
|