2013-08-30 64 views
7

Tôi đang cố gắng sử dụng truy vấn phụ trên câu lệnh chọn cho giá trị trường nhưng tôi dường như không thể tìm ra cú pháp chính xác. Tôi muốn lấy danh sách tên công ty và làm trường cho truy vấn đó, tôi muốn chọn tất cả nhân viên cho công ty đó.T-SQL nối các hàng thành chuỗi

Bất kỳ ý tưởng nào về những gì tôi đang làm sai? Các lỗi tôi nhận được là

Chỉ có một biểu hiện có thể được quy định trong danh sách lựa chọn khi subquery được không giới thiệu với EXISTS

mã 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 

đầu ra mong muốn:

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

thể trùng lặp của [CONCATENATE nhiều hàng vào một chuỗi văn bản duy nhất?] (Http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single- chuỗi văn bản) – Jeremy

Trả lời

9

Bạn sẽ cần nối tên và họ bằng cách sử dụng FOR XML PATH hoặc một giải pháp tương tự. Thêm chi tiết về các phương pháp khác nhau 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

Cảm ơn bạn vì thông tin đó. Điều đó làm việc hoàn hảo, cực kỳ hữu ích. Cảm ơn một lần nữa. – Ralph

Các vấn đề liên quan