更新以逗号分隔的多个值的列?

时间:2018-02-05 05:46:57

标签: sql sql-server

我有以下表Userinfo_attarea:

id  employee_id area_id
182521  4391    2
182522  4391    3

Personnel_area:

id  areaid
1   Area Name
2   PROJECT80
3   PROJECT69

当我更新时它可以正常运行单个值但我需要一个由逗号分隔的多个值的列,如下所述

预期产出:

areaname
PROJECT80,PROJECT69

我正在使用以下查询进行更新

UPDATE  employee 
SET    employee.areaname = p.areaname 
FROM    employee join userinfo u
 on u.badgenumber=employee.emp_reader_id join userinfo_attarea ua on ua.employee_id=u.userid join personnel_area  p on ua.area_id=p.id
JOIN inserted I ON u.userid= I.employee_id

提前致谢...

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

Update E set areaname = T.areaname from @Employee E
Inner Join
(
    Select employee_id,STUFF((SELECT ', ' + CAST(areaid AS VARCHAR(10)) [text()]
        FROM (
        Select U.employee_id,P.areaid from @Userinfo_attarea U 
        Inner Join @Personnel_area P on U.area_id = P.id
    ) B
        WHERE employee_id = A.employee_id
        FOR XML PATH(''), TYPE)
    .value('.','NVARCHAR(MAX)'),1,2,' ') areaname from
    (
    Select U.employee_id,P.areaid from @Userinfo_attarea U 
    Inner Join @Personnel_area P on U.area_id = P.id
    ) A
    GROUP BY employee_id
) T on T.employee_id = E.id

工作demo