1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| CREATE PROCEDURE CONSOLIDATION
AS
-- DECLARATION DES VARIABLES
DECLARE @NomTable varchar(10)
DECLARE @SQL varchar(2000)
DECLARE @champ1 varchar(8000)
DECLARE @Champ2 varchar(8000)
DECLARE @champ3 varchar(8000)
DECLARE @id varchar(100)
SET @champ1= ''
SET @champ2= ''
SET @champ3= ''
-- DECLARATION DU CURSEUR POUR CHACUN DES ID
DECLARE curs CURSOR
FOR
SELECT id
FROM DONNEES_NON_CONSOLIDEES
ORDER BY id DESC
SET @NomTable = 'DONNEES_CONSOLIDEES'
-- Suppression des entrées si la table existe, sinon on créé la table
IF EXISTS(SELECT * FROM INFORMATION_SCHEMA.tables WHERE TABLE_NAME = @NomTable)
DELETE FROM DONNEES_CONSOLIDEES
ELSE
CREATE TABLE DONNEES_CONSOLIDEES
(id varchar(15),
champ1 varchar(8000),
champ2 varchar(8000),
champ3 varchar(8000))
OPEN curs
-- POUR CHAQUE ID
FETCH curs INTO @id
While @@fetch_status = 0
-- ON RECUPERE DANS DES VARIABLES TOUTES LES COLONNES DE TOUTES LES LIGNES DES DIFFERENTES COLONNES POUR L'ID EN COUR
BEGIN
SELECT @champ1=@champ1+COALESCE(champ1 + ', ', ''), @champ2=@champ2+COALESCE(champ2+ ', ', ''), @champ3=@champ3+COALESCE(champ3+ ', ', '')
FROM DONNEES_NON_CONSOLIDEES
WHERE id = @id
-- AVEC CES VARIABLES ON LES INSERT DANS LA NOUVELLE TABLE
INSERT INTO DONNEES_CONSOLIDEES(id, champ1, champ2, champ3) VALUES (@id, @champ1, @champ2, @champ3)
SET @champ1= ''
SET @champ2= ''
SET @champ3= ''
FETCH curs INTO @id
END
CLOSE curs
DEALLOCATE curs
GO |
Partager