Echa un vistazo a esta función. Hice trucos similares para dividir y transponer datos en Oracle. Recorra los datos insertando los valores decodificados en una tabla temporal. Lo convencional es que MS te permitirá hacer esto sobre la marcha, mientras que Oracle requiere una tabla temporal explícita.
Función de división de MS SQL
Mejor función de división
Editar por autor: Esto funcionó muy bien. El código final se veía así (después de crear la función de división):
select pv.productid, colortable.items as color
from product p
cross apply split(p.color, ',') as colortable