I am writing a cursor to populate data in new table from main table which contains data in below manner
Item | Colors |
---|---|
Shirt | Red,Blue,Green,Yellow |
I want to populate new Table data by fetching the Item and then adding it in row, according to each color it contains
Item | Color |
---|---|
Shirt | Red |
Shirt | Blue |
Shirt | Green |
Shirt | Yellow |
I am stuck in how to
as I am going to use Nested cursor for this purpose.
Using Sql Server 2005+ and the XML datatype, you can have a look at the following
DECLARE @Table TABLE(
Item VARCHAR(250),
Colors VARCHAR(250)
)
INSERT INTO @Table SELECT 'Shirt','Red,Blue,Green,Yellow'
INSERT INTO @Table SELECT 'Pants','Black,White'
;WITH Vals AS (
SELECT Item,
CAST('<d>' + REPLACE(Colors, ',', '</d><d>') + '</d>' AS XML) XmlColumn
FROM @Table
)
SELECT Vals.Item,
C.value('.','varchar(max)') ColumnValue
FROM Vals
CROSS APPLY Vals.XmlColumn.nodes('/d') AS T(C)