Select jak crosstab
maalek@go2.pl - 30-03-2006 00:13
Select jak crosstab
Witam
Mam powiedzmy tabelę:
id_konta | id_ludzika | kwota
X ludzików wykonuje operacje na Y kontach przy czym jednen ludzik może wykonac na tym samym koncie kilka operacji.
Pytanie:
Jak zrobić SELECTA tak aby wierszami były konta, kolumnami ludziki a w przecięciu suma kwot z operacji ludzik/konto ?
Pozdrawiam maalek
Rafal sxat - 30-03-2006 00:13
> > Mam powiedzmy tabelę: > > id_konta | id_ludzika | kwota > > X ludzików wykonuje operacje na Y kontach przy czym jednen ludzik > może > wykonac na tym samym koncie kilka operacji. > > Pytanie: > > Jak zrobić SELECTA tak aby wierszami były konta, kolumnami ludziki a > w > przecięciu suma kwot z operacji ludzik/konto ?
to jest mozliwe do zrobienia ale przynajmniej 2 zapytaniami przy zalozeniu ze nie masz wiecej niz 1000 ludzikow bo to moze byc troche ciezkie do uniesienia naraz w pamieci pozdr Rafal (sxat)
-- Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
maalek@go2.pl - 30-03-2006 00:13
Ludzików jest mało (kilkadziesiąt) kont podobnie, cała baza śmiesznie mała na obecny sprzęt. Mozna to oczywiście robić procedurą czy na zewnątrz bazy ale chciałem czystego SQLa.
Więc ? Może jakiś przykładzik malutki ?
Pozdrawiam maalek
> to jest mozliwe do zrobienia ale przynajmniej 2 zapytaniami przy zalozeniu > ze nie masz wiecej niz 1000 ludzikow bo to moze byc troche ciezkie do > uniesienia naraz w pamieci > pozdr > Rafal > (sxat)
Grzegorz Danowski - 30-03-2006 00:13
Użytkownik <maalek@go2.pl> napisał w wiadomości news:1143639857.330721.204360@t31g2000cwb.googlegr oups.com... <cite> Ludzików jest mało (kilkadziesiąt) kont podobnie, cała baza śmiesznie mała na obecny sprzęt. Mozna to oczywiście robić procedurą czy na zewnątrz bazy ale chciałem czystego SQLa.
Więc ? Może jakiś przykładzik malutki ? </cite>
Proszę bardzo: TRANSFORM Sum(T.kwota) AS RazemKwota SELECT T.id_konta FROM TabelaZrodlowa As T GROUP BY T.id_konta PIVOT T.id_ludzika
Ps. Złośliwy jestem dzisiaj, więc musisz zgadnąć w jakiej bazie to działa, może przypadkiem będzie to ta, której używasz, ja niestety nie wiem...
maalek@go2.pl - 30-03-2006 00:13
MS A... ?
Niestety takiej nie uzywam :), MySQL
Grzegorz Danowski - 30-03-2006 00:13
Uzytkownik <maalek@go2.pl> napisal w wiadomosci news:1143647524.729802.162600@t31g2000cwb.googlegr oups.com... > MS A... ? > > Niestety takiej nie uzywam :), MySQL >
Moze w MySQL jest jakas specjalna funkcja (analogiczna do tej, która jest w Accessie lub podobna do tej ze SQL Servera 2005), jesli nie, to mozesz zawsze zrobic cos w stylu:
Select Id_konta, Sum(Case When Id_ludzika = 1 Then kwota Else 0 End) As ludzik1, Sum(Case When Id_ludzika = 2 Then kwota Else 0 End) As ludzik2, Sum(Case When Id_ludzika = 3 Then kwota Else 0 End) As ludzik3, ..... From TwojaTabela Group By Id_konta
Oczywiscie, caly ten SQL najlepiej generowac dynamicznie w zaleznosci od listy uzytkowników. Ale moim zdaniem i tak najlepiej generowac takie dane po stronie klienta, najpierw podsumowac sprzedaz dla kazdego konta i ludzika, potem dynamicznie tworzyc stosowna tabelke. Jak cos takiego zrobilem w c#, to nawet mozliwa byla edycja scrosowanych tabel (klucz glówny na obu polach lacznie).
Pozdrawiam Grzegorz
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[help] Illustrator CS - =?ISO-8859-2?Q?znikn=B1=B3_Selection_?==?ISO-8859-2?Q?Tool_=28V=29?=
[mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu.
SELECT MAX(nazwaPola) FROM tabela WHERE .... i ORA-01405: pobran? warto?ci? kolumny jest NULL
=?iso-8859-2?q?select_sum_i_dwie_tabele..._b=B3=EAdna_agregac ja?=
=?iso-8859-2?Q?=5BMySql=5D_-_select_po_5_rekordow_mniejssych_i_wi=EAkszych?=
=?iso-8859-2?Q?=5BMySql=5D_Select_wed=B3ug_nazwy_pola?=
=?ISO-8859-2?Q?[mysql]_Nie_potrafi=EA_zgrupowa=E6_selecta_(proste)?=
=?ISO-8859-2?Q?[MS_SQL]_update_wielu_p=F3l_na_raz_z_selecta?=
Wstawianie nowego wiersza w przypadku jego braku podczas SELECT w PostgreSQL
[pgsql] jak =?ISO-8859-2?Q?zrobi=E6_taki_select_=3F?=
zanotowane.pldoc.pisz.plpdf.pisz.platanvarne633.opx.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 |
|