agregace string column

"Zíka Aleš, Ing." Ales.Zika na pel.br.ds.mfcr.cz
Čtvrtek Duben 3 09:44:17 CEST 2003


	PostgreSQL ma prikaz CREATE AGGREGATE, kterym se da vytvorit vlastni
agregacni funkce nad libovolnym datovym typem. Nekde jsem videl priklad,
ktery delal presne to, co chcete, bohuzel ho ted nemuzu najit.
	Ale aspon jsem zi ropzsiril vzdelani a zkusil jsem to uplacat sam,
tady je vysledek:

CREATE FUNCTION text_sum(text, text) RETURNS text AS '
  SELECT $1 || '', '' $$ $2;
' LANGUAGE SQL;

CREATE AGGREGATE sum(
  BASETYPE = text,
  SFUNC = text_sum,
  STYPE = text,
  INITCOND = ''
);

	Timhle vytvorite (nebo spis pretizite) agregacni funkci sum, kterou
kdyz postvete na sloupec s datovym typem text, tak vam vrati hodnoty ze
vsech radku na jednom radku jako seznam oddeleny carkou a mezerou. Neni to
jeste uplne dokonale, na zacatku je jedna carka navic, to kdyz pripojuje k
prazdnemu seznamu hodnotu z prvniho radku. Ale to by slo urcte osetrit,
napsat treba tu funkci v plpgsql a testovat, ze pokud je $1 prazdna, taxe
tam ta carka neda. Ale jsem linej a navic jsem to nechtel kvuli nazornosti
komplikovat ;-)
	Jaxou na tom ostani DBMS nevim, ale ve vetsine tohle asi nepujde.
Jen jeden muze byt kralem :-)

			Ales Zika
			Pelhrimov

			e-mail: Ales.Zika na pel.br.ds.mfcr.cz
				  Ales.Zika na seznam.cz


> -----Původní zpráva-----
> Od: Zdenek Prchal [mailto:prchal na vtdata.cz] 
> Odesláno: 2. dubna 2003 21:43
> Komu: databases na linux.cz
> Předmět: agregace string column
> 
> 
> Potreboval bych ziskat jako vysledek SQL dotazu string
> obsahujici spojene hodnoty poli z jednoho sloupce, ev.
> s nejakym oddelovacem. Vypada to, ze na tohle SQL moc
> zarizene neni, coz? Pokud bych to resil pres nejakou stored
> proceduru, tak jak na to - asi pres cursor a postupne
> to pospojovat do promenne, coz? Nebo existuje nejake lepsi,
> ne tak hloupe reseni? Maji na to nektere SQL servery nejakou
> proprietarni funkci? Napr. MS SQL Server nebo PostgreSQL,
> MySQL, ev. jine?
> 
> 	Zdenek Prchal
> 


Další informace o konferenci Test