2013-08-30 6 views
7

フィールド値のselect文でサブクエリを使用しようとしていますが、正しい構文を理解できないようです。私は会社名のリストを取得したいので、そのクエリのフィールドとして、その会社のすべての従業員を選択したいと思います。T-SQLは行を文字列に連結します

私が間違っていることに関するアイデアはありますか?

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

所望の出力::私は取得エラーサブクエリがで導入されていないときである

つだけの式が選択リストで指定することができますが

T-SQLコードをEXISTS

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

[単一のテキスト文字列に多くの行を連結?](http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-の可能重複文字列) – Jeremy

答えて

9

0123を使用して姓と名を連結する必要がありますまたは同様の解決法である。さまざまな方法の詳細は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

その情報をありがとうございました。それは完璧に機能し、非常に助けになります。再度、感謝します。 – Ralph