[pgsql] pole wiersza jako kolumna
Robert Vailor - 23-06-2006 00:09
[pgsql] pole wiersza jako kolumna
Mozliwe jest jakies ladne zapytanie bazy ktore w wyniku da: np. pole_zadanie,pole_wartosc, wykonawca 1, 12, ala 1, 14, hala 2, 15, hala -> ala hala razem 1 12 14 26 2 0 15 15
przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci.
robert
=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 23-06-2006 00:09
Robert Vailor wrote: > Mozliwe jest jakies ladne zapytanie bazy ktore w wyniku da: > np. > pole_zadanie,pole_wartosc, wykonawca > 1, 12, ala > 1, 14, hala > 2, 15, hala > -> > ala hala razem > 1 12 14 26 > 2 0 15 15 > > przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci. > >
podawaj w pytaniu, jakiej bazy używasz.
ogólnie to o co pytasz wystepuje pod hasłami: pivot query, cross-tab.
w standardzie sql nie ma prostego sposobu na realizację. niektórzy producenci (zwłaszcza Microsoft) dodają to jako "vendor extension"
F.
Piotr 'piter' Hlawski - 23-06-2006 00:09
Filip Rembiałkowski wrote:
> podawaj w pytaniu, jakiej bazy używasz.
Podał, pgsql - PostgreSQL
-- ..:: Piter // phlawski$gmail,com // gg: 4534287 ::. Chuck Norris nie śpi. Czeka.
=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 23-06-2006 00:10
Robert Vailor napisał(a): > Mozliwe jest jakies ladne zapytanie bazy ktore w wyniku da: > np. > pole_zadanie,pole_wartosc, wykonawca > 1, 12, ala > 1, 14, hala > 2, 15, hala > -> > ala hala razem > 1 12 14 26 > 2 0 15 15 > > przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci. > > > robert > > Może pójdzie tak:
SELECT pole_zadanie,
sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END) AS ala, sum(case when pole_wykonawca ='Hala' then pole_wartosc else 0 END) AS hala,
sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END)+ sum(case when pole_wykonawca ='Hala' then pole_wartosc else 0 END) AS razem
FROM tabela
GROUP BY pole_zadanie;
-- Czarek
=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 23-06-2006 00:10
Piotr 'piter' Hlawski wrote: > Filip Rembiałkowski wrote: > > > podawaj w pytaniu, jakiej bazy używasz. > > Podał, pgsql - PostgreSQL
faktycznie, przepraszam przy okazji przestroga dla korzystających z groups.google.com ten wredny google obciął [pgsql]
=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 23-06-2006 00:10
Cezary Grądys wrote: > Robert Vailor napisał(a): > > Mozliwe jest jakies ladne zapytanie bazy ktore w wyniku da: > > np. > > pole_zadanie,pole_wartosc, wykonawca > > 1, 12, ala > > 1, 14, hala > > 2, 15, hala > > -> > > ala hala razem > > 1 12 14 26 > > 2 0 15 15 > > > > przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci. > > > > > > robert > > > > > Może pójdzie tak: > > SELECT pole_zadanie, > > sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END) AS ala, > sum(case when pole_wykonawca ='Hala' then pole_wartosc else 0 END) AS hala, > > sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END)+ > sum(case when pole_wykonawca ='Hala' then pole_wartosc else 0 END) AS razem > > > FROM tabela > > GROUP BY pole_zadanie; > > pójdzie ale nie spełnia założenia, cyt. > > przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci.
uniwersalnym rozwiązaniem będzie skorzystanie z contrib/tablefunc
pozdrawiam ze Służewca :) Filip
=?ISO-8859-2?Q?Cezary_Gr=B1dys?= - 23-06-2006 00:10
Filip Rembiałkowski napisał(a): > Cezary Grądys wrote: > >>Robert Vailor napisał(a): >> >>>Mozliwe jest jakies ladne zapytanie bazy ktore w wyniku da: >>>np. >>>pole_zadanie,pole_wartosc, wykonawca >>>1, 12, ala >>>1, 14, hala >>>2, 15, hala >>>-> >>> ala hala razem >>>1 12 14 26 >>>2 0 15 15 >>> >>>przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci. >>> >>> >>>robert >>> >>> >> >>Może pójdzie tak: >> >>SELECT pole_zadanie, >> >>sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END) AS ala, >>sum(case when pole_wykonawca ='Hala' then pole_wartosc else 0 END) AS hala, >> >>sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END)+ >>sum(case when pole_wykonawca ='Hala' then pole_wartosc else 0 END) AS razem >> >> >>FROM tabela >> >>GROUP BY pole_zadanie; >> >> > > pójdzie > ale nie spełnia założenia, cyt. > >>>przy zalozeniu ze pole wykonawca moze miec zmienna ilosc roznych warosci. > > > uniwersalnym rozwiązaniem będzie skorzystanie z contrib/tablefunc > > > pozdrawiam ze Służewca :) > Filip > Fakt, niedoczytałem. Też pozdrawiam
-- Czarek
hubert depesz lubaczewski - 23-06-2006 00:10
On 2006-06-22, Filip Rembiałkowski <plk.zuber@gmail.com> wrote: > uniwersalnym rozwiązaniem będzie skorzystanie z contrib/tablefunc
nie będzie. tablefunc ma limity na ilosc kolumn.
depesz
-- http://www.depesz.com/ - nowy, lepszy depesz
Robert Vailor - 24-06-2006 00:10
Wkorzystalem >sum(case when pole_wykonawca ='Ala' then pole_wartosc else 0 END) AS ala, >sum(case when .... (malego otwora napukalem :) ) + apliakcja kliencka koncowy efekt zadawalajacy.
Dzieki za sugestie
Dzieki za info jak taka operacja sie nazywa (pivot query, cross-tab) latwiej cos wygooglac
Robert
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?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?=
[pgsql] Akcja w =?iso-8859-2?b?emFsZb9ub7ZjaQ==?= od liczby zmienionych =?iso-8859-1?q?rekord=F3w?=
[sql][pgsql] zapytanie sql
[pgsql] Wykonanie triggera po =?ISO-8859-2?Q?zako=F1czeniu_tra?==?ISO-8859-2?Q?nsakcji?=
[pgsql] =?ISO-8859-2?Q?Prawid=B3owe_post=EApowanie_w_przyp?==?ISO-8859-2?Q?adku_awarii?=
[PGSQL] Funkcje =?ISO-8859-2?Q?zwracaj=B1ce_=27rowset=27_i_?==?ISO-8859-2?Q?tabele_tymczasowe?=
[pgsql] 7.4 =?ISO-8859-2?Q?og=B3upia=B3_przy_zak=B3adaniu_?==?ISO-8859-2?Q?indeksu?=
[pgsql] Zmiana schematu do =?ISO-8859-2?Q?kt=F3rego_nalezy_o?==?ISO-8859-2?Q?biekt=2E?=
Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?=
ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?=
zanotowane.pldoc.pisz.plpdf.pisz.plnatalia97.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 |
|