Question

I have a table like

create table Test_Table(LoginID nvarchar(max),Team nvarchar(max))

It has some data like

insert into Test_Table values
('kbcg','Administrator,Teacher,Student'),
('kbc','Admin,Teacher,Principal')

Now, I want data to be displayed like

LoginID | Team

kbcg    | Administrator

kbcg    | Teacher

kbcg    | Student

kbc     | Admin

and so on...

Need a function for this. Thanks in advance

Was it helpful?

Solution

How about something like

DECLARE @TABLE TABLE(
        LoginID NVARCHAR(MAX),
        Team nvarchar(max)
)
INSERT INTO @TABLE values
('kbcg','Administrator,Teacher,Student'),
('kbc','Admin,Teacher,Principal')

;WITH Vals AS (
        SELECT  LoginID,
                CAST('<d>' + REPLACE(Team, ',', '</d><d>') + '</d>' AS XML) XMLCol
        FROM    @TABLE
)
SELECT  Vals.LoginID,
        B.value('.','NVARCHAR(MAX)') Team
FROM    Vals CROSS APPLY
        XMLCol.nodes('/d') AS A(B)

SQL Fiddle DEMO

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top