La idea es separar la cadena en partes y escribir cada una de ellas en una columna distinta, la tarea es simple si se conoce "a priori" la cantidad de partes que tiene la cadena.
- Función
CREATE FUNCTION dbo.fnSepararCadena(@Texto nvarchar(max), @Separador nvarchar(4000))
RETURNS @T TABLE (Id int IDENTITY(1,1), Valor nvarchar(max))
AS
BEGIN
DECLARE @XML xml;
SET @XML = N'<root><r>' + REPLACE(@Texto, @Separador,'</r><r>') + '</r></root>';
INSERT INTO @T(Valor)
SELECT
r.value('.', 'varchar(max)') AS Item
FROM
@XML.nodes('//root/r') AS records(r)
RETURN
END
- Ejemplo de uso
DECLARE @T table (Col nvarchar(100));
INSERT INTO @T VALUES
('1,ROVER,1000,MARCA,2'),
('1,BMW,1000,MARCA,300');
SELECT
MAX(CASE WHEN t2.F = 1 THEN t2.V END) AS Col1,
MAX(CASE WHEN t2.F = 2 THEN t2.V END) AS Col2,
MAX(CASE WHEN t2.F = 3 THEN t2.V END) AS Col3,
MAX(CASE WHEN t2.F = 4 THEN t2.V END) AS Col4,
MAX(CASE WHEN t2.F = 5 THEN t2.V END) AS Col5
FROM
@T t1
CROSS APPLY (SELECT Valor, ROW_NUMBER() OVER(ORDER BY Id)
FROM dbo.fnSepararCadena(t1.Col, ',')) t2 (V, F)
GROUP BY
t1.Col;
- Resultado

Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.