Bonjour,
J'ai une table avec plusieurs enregistrements mais je voudrais obtenir une seul ligne avec toutes les valeurs dans la même colonne.
Je sais qu'il existe plusieurs façons pour le faire, (FOR XML PATH(''), etc...)
Mais lorsque l'on a beaucoup de données et de colonnes, je trouve cette méthode longue.
Je pensais à faire une table avec mes identifiant puis après je voulais faire un update.
par contre je ne comprend pas pourquoi je n'y arrive pas.
C'est surement rien, ou ce n'est pas possible, mais je m'obstine et je ne comprend pas.
Voici ma table
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 DECLARE @Table as Table( nId1 int , nId2 INT , tValeur nvarchar(255) ); Insert INTO @Table Values (1,1,'test110'); Insert INTO @Table Values (1,1,'test111'); Insert INTO @Table Values (1,1,'test112'); Insert INTO @Table Values (2,1,'test211'); Insert INTO @Table Values (2,1,'test212'); Insert INTO @Table Values (1,2,'test121');
et voici ce que je pensais faire.
Je met dans une table de résultat mes différents identifiants uniques (nid1 et nid2)
puis je réalise un update sur ces même identifiant
Code SQL : 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 DECLARE @ResultTable as Table( nId1 int , nId2 INT , tValeur nvarchar(255) ); Insert INTO @ResultTable Select DISTINCT t.nId1, t.nId2, '' FROM @Table as T; UPDATE R Set R.tValeur = CONCAT(R.tvaleur,'|',t.tValeur) From @ResultTable as R INNER join @Table as T ON R.nId1 = t.nId1 AND r.nId2 = t.nId2;
Mais je n'arrive pas à comprendre pourquoi je n'obtient pas
nId1 nId2 tValeur 1 1 |test110|test111|test112 1 2 |test121 2 1 |test211|test212
Merci d'avance pour votre aide.
Partager