Query for comma-separated ids to comma-separated values

后端 未结 5 1574
终归单人心
终归单人心 2021-01-03 03:16

I have 2 tables

Departments

ID  Dept
---------
1   HR
2   Accts
3   IT

Employee

I         


        
5条回答
  •  忘掉有多难
    2021-01-03 03:30

    Looking beyond how you're storing your data, let me try to help you out.

    Well, you're asking a lot of questions here. First, to split the data, you can format it as XML and use CROSS APPLY -- trick I saw a while back that didn't require built in functions.

    That will convert your comma delimited string to a list of strings. You can then use FOR XML to put them back together.

    Give this a shot:

    SELECT
       E.Id, 
       E.Name, 
       STUFF(
            (
            SELECT ',' +  D.Department AS [text()]
            FROM  (
               SELECT A.[id],  
                 Split.a.value('.', 'VARCHAR(100)') AS DeptId  
               FROM  
                  (SELECT [id],  
                     CAST ('' + REPLACE(Depts, ',', '') + '' AS XML) AS String  
                  FROM  Employee
              ) AS A 
            CROSS APPLY String.nodes ('/M') AS Split(a)) A 
            JOIN Departments D ON A.DeptId = D.Id
            WHERE E.Id = A.Id
            FOR XML PATH('')
            ), 1, 1, '') AS Departments
    FROM Employee E
    

    And here is the SQL Fiddle.

    Good luck.

提交回复
热议问题