나는 테이블과 함께 전형적인 값을 다음과 같:식별,전화번호,사람의 이름을 등입니다. 이 테이블의 경우에는 사람은 하나 이상의 전화 번호하는 사람이 나타납니다 여러 번,각 반복으로 다른 전화 번호에 해당하는 사람입니다.
나의 목표를 작성하는 커서를 추가로 모든 다른 휴대폰 사람은 하나의 전화 값에서 새로운 테이블,그들의 각각으로 구분하여','. 에서는 방법으로 각각의 사람이 단 한 번만 나타납에서 테이블,하지만 전화 번호 값이 있는 전화 번호하는 사람이 소유하고있으로 구분하여','.
나는 뭔가 다음과 같다:
여기에서 내가 만드는"정상"표 그 사람 정보해야하려면:
CREATE TABLE IF NOT EXISTS Telefono_General_V2 (Cedula_v2 varchar(50),Nombre_v2 varchar(50),Cantidad int, Telefono_v2 varchar(max))
이것은 일시적인 테이블을 선택 사람 ID 와 반복되는 여러 번,그것을 의미하는 여러 전화번호(Telefonos_General 은 표 나는 데이터에서).
SELECT Cedula_v1 AS Cedula, COUNT(1) AS cantidad_repetidos
INTO #DatosRepetidosTemp
FROM Telefonos_General
GROUP BY Cedula_v1
HAVING COUNT(1) >1
여기에 내가 선언하는 변수에 사용되는 커서:
DECLARE
@Cedula varchar(50),
@Cuenta int,
@Prev_Telefono varchar(max),
@Telefonos varchar(max)
다음을 선언하면 커서 자체:
DECLARE cursor_telefonos CURSOR FOR
SELECT TOP (100) Cedula, cantidad_repetidos, Telefono_v1
FROM #DatosRepetidosTemp
JOIN Telefonos_General on Cedula_v1 = Cedula
WHERE Cedula is not null
시작하면 커서:
OPEN cursor_telefonos
FETCH NEXT FROM cursor_telefonos
INTO @Cedula, @Cuenta, @Prev_Telefono
WHILE @@FETCH_STATUS = 0
BEGIN
IF @Telefonos = NULL
SET @Telefonos = @Prev_Telefono
ELSE
이는 동안 루프 반환@Prev_Telefono 으로 null 이면(@Telefonos+','+@Prev_Telefono).
WHILE @Cuenta != 0
BEGIN
SET @Telefonos = @Telefonos+ ', ' + @Prev_Telefono
SET @Prev_Telefono = @Telefonos
SET @Cuenta = @Cuenta - 1
END
INSERT IGNORE INTO Telefono_General_V2 (Cedula_v2, Cantidad, Telefono_v2)
VALUES (@Cedula, @Cuenta, @Telefonos)
FETCH NEXT FROM cursor_telefonos INTO @Cedula, @Cuenta, @Telefonos
여기에 내가 그냥 커서를 닫:
END
CLOSE cursor_telefonos
DEALLOCATE cursor_telefonos
누군가가 이유를 알아 내 while 삽입 null 에 새로운 휴대폰 표해야 할 경우 이러한 목록의 추가 전화 번호의 사람입니까?
감사에 대한 많은 관심!!