Buenas Tardes LUISESPOCH:
Lo que quieres no creo que lo puedas lograr con un simple select. Aquí te dejo una función que lo hace. Quizás puedas optimizarla, la verdad a estas horas del partido ya no carburo muy bien y fue lo primero que se me ocurrió jejeje.
Código SQL:
Ver originalCREATE FUNCTION dbo.fn_dias
(
@Cadena VARCHAR(100)
)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @CadenaFinal VARCHAR(100)
SET @CadenaFinal = '' --Inicializa la Cadena Final
DECLARE @Posicion_inicial INT
SET @Posicion_inicial = 0
DECLARE @Posicion_final INT
SET @Posicion_final = CHARINDEX('S', @Cadena)
WHILE @Posicion_final > 1
BEGIN
--Copia el segmento desde la posición inicial hasta la posición en donde se encontró la S
SET @CadenaFinal = @CadenaFinal + SUBSTRING(@Cadena, @Posicion_inicial, @Posicion_final-@Posicion_inicial) + CAST(@Posicion_final AS VARCHAR)
--Elimina la primer S
SET @Cadena = SUBSTRING(@Cadena, 0, @Posicion_final) + 'N' + SUBSTRING(@Cadena, @Posicion_final+1, LEN(@Cadena))
--Mueve la posición inicial una posición después de la posición final
SET @Posicion_inicial = @Posicion_final+1
--Veridica si existe alguna otra S
SET @Posicion_Final = CHARINDEX('S', @Cadena)
END
--Verifica si hay caracteres después de la última S para concatenarlos a la cadena
IF @Posicion_Inicial - 1 <= LEN(@Cadena)
SET @CadenaFinal = @CadenaFinal + SUBSTRING(@Cadena, @Posicion_Inicial, LEN(@Cadena))--Concatena el último tramo de la cadena
RETURN @CadenaFinal
END
SELECT dbo.fn_dias('NNNNNSSNNNNNSSNNNNNSSNNNNNSS')
Saludos
Leo.