Bonjour,

Le titre n'est pas explicite mais je vais essayer de m'expliquer.

J'ai une table contenant plusieurs milliers de données. Elle se trouve dans une forme comparable à celle ci :

id champ1 champ2 champ3
1 1 1 1
1 1 2 3
1 1 2 1
2 4 5 5
2 5 5 5

que j'aimerai tranformer en

id champ1 champ2 champ3
1 1 1,2 1,3
2 4,5 5 5

Donc en gros, j'aimerais ramener toutes les informations pour les id similaires en une table qui a pour clé primaire id... Histoire de ramener facilement des informations aux utilisateurs.

Pour cela, j'ai commencer à étudier le transact SQl (que je connais pas trop), mais la procédure stockée fait un time-out.

Voici la procédure stockée (ramenée a l'exemple au dessus)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Voila, je ne vois pas ou est l'erreur étant donné mon noobisme en transact SQL.
Pourrais-je solliciter votre aide ?