2013-08-30 15 views
7

Ich versuche, eine Sub-Abfrage für eine Select-Anweisung für einen Feldwert verwenden, aber ich kann nicht scheinen, die richtige Syntax herauszufinden. Ich möchte eine Liste von Firmennamen abrufen und als ein Feld für diese Abfrage möchte ich alle Mitarbeiter für diese Firma auswählen.T-SQL verketten Zeilen in Zeichenfolge

Irgendwelche Ideen, was ich falsch mache? Der Fehler, den ich bekommen ist

Nur ein Ausdruck kann in der Auswahlliste angegeben werden, wenn die Unterabfrage nicht mit EXISTS eingeführt wird

T-SQL-Code:

SELECT 
    company_name, 
    company_type, 
    (SELECT 
     employee_firstname, employee_lastname 
    FROM 
     tblemployees 
    WHERE 
     tblemployees.company_id = tblCompanies.company_id) as employees 
FROM 
    tblCompanies 

gewünschte Ausgabe:

Company Name | Company Type | Employees 
---------------------------------------------------------- 
Test Co  | Construction | Bob Smith, Jack Smith, etc 
+3

möglich Duplikat [viele Zeilen in einem einzigen Text-String verketten?] (Http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single- Textstring) – Jeremy

Antwort

9

Sie müssen die Vor- und Nachnamen verkettenmitoder eine ähnliche Lösung. Mehr Details zu den verschiedenen Methoden here.

SELECT DISTINCT 
    c1.company_name, 
    c1.company_type, 
    STUFF((SELECT 
       ', ' + c2.employee_firstname + ' ' + c2.employee_lastname 
      FROM 
       tblCompanies c2 
      WHERE 
       c1.company_id = c2.company_id 
      ORDER BY 
       employee_lastname, employee_firstname 
      FOR XML PATH(''), TYPE).value('.', 'varchar(max)'), 1, 1, '') 
FROM tblCompanies c1 

SQL Fiddle

+0

Danke, Sir, für diese Information. Das hat perfekt funktioniert, extrem hilfreich. Danke noch einmal. – Ralph

Verwandte Themen