Befehl der mir alle Zeilen in einer Spalte ausgibt

Hallo,

gibt es ein, wie auch immer geartetes, (Standard) SQL Kommando, mit dem ich den Inhalt einer Spalte über alle Zeilen der Tabelle in ein einziges Feld bekommen kann???

Bsp: ich habe folgende Tabelle A

id text
4 bla
9 xyz
77 abc

und will z.B. mit einem Select auf A ein Feld in Tabelle B füllen, das so aussieht: 4,9,77 (ob Kommagetrennt oder Leerzeichen oder sonstwie ist eigentlich egal). Bin mal gespannt ob jemand eine Idee hat.

Hasta luego
Albert

hi,

ich denke so etwas lässt sich am einfachsten über eine
benutzerdefinierte funktion (user defined function) lösen,
die du vermutlich in der verwendeten datenbank (leider hast
du keine angabe darüber gemacht) definieren kannst.

die funktion führt einen scan (datensatz für datensatz durchlaufen) durch und fasst dabei die einzelnen werte
in einen grossen string (zeichenkette) zusammen, welchen
du dann einfach in die entsprechende spalte eintragen
kannst.

mfg
thomas langenfeld

das Datenbanksystem kann entweder Oracle oder MS-SQL sein. Leider ist eine benutzerdefinierte funktion keine Option für meinen Fall.

Ich greife nämlich über einen Fremdanbieter auf die Datenbank zu und kann nur SQL Befehle absetzen aber keine Funktionen schreiben.

Viele Grüße
Albert

…kannst Du anonyme PL/SQL-Blocks absetzen, ohne dafür eine Prozedur anzulegen:

Bsp: ich habe folgende Tabelle A

id text
4 bla
9 xyz
77 abc

und will z.B. mit einem Select auf A ein Feld in Tabelle B
füllen, das so aussieht: 4,9,77 (ob Kommagetrennt oder
Leerzeichen oder sonstwie ist eigentlich egal). Bin mal
gespannt ob jemand eine Idee hat.

declare
 tmp varchar2(500);
begin
 for i in(select id from tbl\_a order by id) loop
 tmp := tmp || i.id || ',';
 end loop;
 tmp := substr(tmp, 1, length(tmp) - 1);
 insert into tbl\_b values(tmp);
end;
/ 

Das geht sogar über JDBC, usw.

Gruß

J.