मैं एक तालिका के साथ एक ठेठ मूल्यों की तरह: पहचान, फोन नंबर, व्यक्ति का नाम आदि. इस तालिका में यदि एक व्यक्ति को एक से अधिक फोन नंबर उस व्यक्ति को कई बार प्रकट, प्रत्येक यात्रा के साथ एक अलग फोन नंबर के लिए इसी है कि व्यक्ति.
मेरा लक्ष्य है लिखने के लिए एक कर्सर जोड़ना होगा कि सभी अलग-अलग फोन में एक व्यक्ति एक ही फोन के मूल्य में एक नई तालिका, उनमें से प्रत्येक के द्वारा अलग ', '. में है कि जिस तरह प्रत्येक व्यक्ति को केवल एक बार दिखाई तालिका में है, लेकिन फोन नंबर मूल्य होगा अल फोन नंबर है कि व्यक्ति के मालिक द्वारा अलग ','.
मैं के साथ आते हैं, कुछ इस तरह:
मैं यहाँ बनाने के लिए "सामान्यीकृत" टेबल है कि व्यक्तियों की जानकारी होना चाहिए सम्मिलित करें:
CREATE TABLE IF NOT EXISTS Telefono_General_V2 (Cedula_v2 varchar(50),Nombre_v2 varchar(50),Cantidad int, Telefono_v2 varchar(max))
यह है एक अस्थायी तालिका का चयन करने के लिए व्यक्तियों आईडी दोहराया है कि कई बार है, जिसका अर्थ यह कई फोन नंबर (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 के रूप में अशक्त जब यह होना चाहिए (@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
किसी को जानता है क्यों मेरे, जबकि पाश डालने नल पर नए फोन की मेज जब यह किया जाना चाहिए जोड़ने के फोन नंबरों की सूची है कि व्यक्ति है?
बहुत बहुत धन्यवाद आपका ध्यान के लिए!!