7

フィールド値の select ステートメントでサブクエリを使用しようとしていますが、正しい構文がわかりません。会社名のリストを取得し、そのクエリのフィールドとして、その会社のすべての従業員を選択したいと考えています。

私が間違っていることについてのアイデアはありますか?私が得るエラーは

サブクエリが EXISTS で導入されていない場合、選択リストに指定できる式は 1 つだけです。

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

望ましい出力:

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

1 に答える 1

9

FOR XML PATHまたは同様のソリューションを使用して、姓と名を連結する必要があります。さまざまな方法の詳細については、こちらをご覧ください。

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 フィドル

于 2013-08-30T15:51:32.300 に答える