Séparer la donnée d'une colonne en plusieurs colonne
VincentS
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour Mesdames et Messieurs,
Voilà mon problème, dans une colonne nommée "MaData" ma donnée est de ce format "##;##;##;##;##" les ## étant des valeurs numériques.
Je souhaiterai à l'aide d'un requête SQL venir récupérer cette donnée et de la séparer pour l'afficher en plusieurs colonne. J'ai essayé différentes propositions mais rien de concluant.
Pour vous donner une meilleure explication voici un exemple:
En exécutant ce code,
le résultat est = 56 | 10 | 0
Jusque la tout va bien. Or, dès que je modifie ma requête pour aller chercher "MaData" cela ne fonctionne plus. Ex:
Le résultat est = 1;2;3;4;5;6;7;8;9;10;11 | NULL | NULL | NULL
Et je souhaiterai avoir = 1;2;3;4;5;6;7;8;9;10;11 | 11| 10 | 9
J'ai également essayé de faire un "CAST" mais sans succès...
En espérant que vous avez pu comprendre mon problème et ayez une réponse.
Cordialement,
Voilà mon problème, dans une colonne nommée "MaData" ma donnée est de ce format "##;##;##;##;##" les ## étant des valeurs numériques.
Je souhaiterai à l'aide d'un requête SQL venir récupérer cette donnée et de la séparer pour l'afficher en plusieurs colonne. J'ai essayé différentes propositions mais rien de concluant.
Pour vous donner une meilleure explication voici un exemple:
En exécutant ce code,
Select PARSENAME(REPLACE('0;10;56', ';', '.'), 1) AS FirstValue ,PARSENAME(REPLACE('0;10;56', ';', '.'), 2) AS SecondValue ,PARSENAME(REPLACE('0;10;56', ';', '.'), 3) AS ThirdValue
le résultat est = 56 | 10 | 0
Jusque la tout va bien. Or, dès que je modifie ma requête pour aller chercher "MaData" cela ne fonctionne plus. Ex:
SELECT TOP (1) [MaData] --DATA sous forme de "CSV" exemple (1;2;3;4;5;6;7;8;9;10;11) ,PARSENAME(REPLACE([MaData], ';', '.'), 1) AS FirstValue ,PARSENAME(REPLACE([MaData], ';', '.'), 2) AS SecondValue ,PARSENAME(REPLACE([MaData], ';', '.'), 2) AS ThirdValue FROM CopiloteTest.dbo.Info_Plc
Le résultat est = 1;2;3;4;5;6;7;8;9;10;11 | NULL | NULL | NULL
Et je souhaiterai avoir = 1;2;3;4;5;6;7;8;9;10;11 | 11| 10 | 9
J'ai également essayé de faire un "CAST" mais sans succès...
En espérant que vous avez pu comprendre mon problème et ayez une réponse.
Cordialement,
Configuration: Windows serveur
A voir également:
- Reverse(parsename(replace(reverse
- Déplacer une colonne excel - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
- Formule moyenne excel plusieurs colonnes - Guide
1 réponse
Bonjour
Peut-être
Peut-être
SELECT TOP (1) [MaData] ,REVERSE(PARSENAME(REPLACE(REVERSE([MaData]), ';', '.'), 1)) AS FirstValue , REVERSE(PARSENAME(REPLACE(REVERSE([MaData]), ';', '.'), 2)) AS SecondValue , REVERSE(PARSENAME(REPLACE(REVERSE([MaData]), ';', '.'), 3)) AS ThirdValue FROM CopiloteTest.dbo.Info_Plc