SQL - Felder nebeneinander ausgeben

nyc2005

Grünschnabel
Hallo!

Ich habe folgendes Problem, dass ich eine Liste erstellen soll für Teilnehmer von Veranstaltungen. Dort gibt es manchmal auch mehrere Referenten (refvname || ' ' || refname). Diese werden mir allerdings untereinander angezeigt, was wiederrum die ganze Liste durcheinanderbringt.

Der SQL-Befehl, den ich bis jetzt habe:

select distinct refvname || ' ' || refname
from wb_detail, wb

Jetzt meine Frage: Wie bekomme ich (falls es mehrere Referenten gibt) diese nebeneinander in eine Zeile?


Ich würde mich sehr freuen, wenn mir jemand helfen könnte.
 
Und mit welchem DBMS?

Davon abgesehen: Was steht in den Tabellen WB und WB_Detail? Und wie sind die verknüpft? In Deiner Query bildest Du einfach nur das Kreuzprodukt beider Tabellen...
 
Zuletzt bearbeitet:
select distinct refvname || ' ' || refname
from wb_detail, wb
where wb.wb_refnr = wb_detail.wb_refnr
and
wb_nr = [WB_NR]

das ist die ganze syntax.

mit oracel.

wb_detail, wb sind tabellen aus einem tabellensystem, auf das das programm zugreift.
 
Aha, das erklärt zwar die Struktur ein bischen besser, aber leider habe ich für Oracle keine Lösung des Problems.
 
Du kannst dein Problem mit einer PL/SQL Prozedur lösen. Hier mal ein Beispiel für die benötigte Funktion:

Code:
> select * from test;

       VAL
----------
         1
         3
         6
         3
        12
         5

6 Zeilen ausgewählt.

Die obigen Werte will ich nun in einem einzigen Feld:

Code:
> declare
      arr         DBMS_UTILITY.uncl_array;
      valcount    BINARY_INTEGER;
      list        VARCHAR2(32000);
      i           NUMBER := 1;
    begin
  
      for item in ( SELECT val from excel.test ) LOOP
        arr( i ) := item.val;
        i := i+1;
       END LOOP;
       arr( i ):= NULL;
   
       dbms_utility.table_to_comma( arr, valcount, list );
   
       dbms_output.put_line( 'Number of values: ' || TO_CHAR( valcount ) );
       dbms_output.put_line( 'List            : ' || list );
   
     end;
     /
Number of values: 6
List            : 1,3,6,3,12,5

PL/SQL-Prozedur wurde erfolgreich abgeschlossen.

In der Variable "list" ist nun eine Liste mit allen Werten in einem Feld, die Variable "valcount" enthält die Anzahl der Werte.
 
danke, für deine hilfe.
allerdings: eins verstehe ich immer noch nicht:
wie baue ich meine variablen refname und refvname darin ein?
und muss ich statt excel.test meine eigene datei angeben?
 

Neue Beiträge

Zurück