ďťż
 
[pgsql] pole wiersza jako kolumna ďťż
 
[pgsql] pole wiersza jako kolumna
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    =?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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • natalia97.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com