Bonjour a tous je souhaite "convertir" mon tableau sous un autre format je m'explique
J'ai un tableau sous cette forme suite a un parsing sur une colonne
COLONNE_A | RETSEQ | COLONNE_B
key1 | 1 | parsval1left
key1 | 2 | parsval1rigth
key2 | 1 | parsval2left
key2 | 2 | parsval2rigth
....
en gros je parse une colonne d'un autre tableau en 2 parties qui sont,
parsvalXleft qui est la partie de gauche et bis repetita pour parsvalXrigth
(keyX représente une référence de pièce, parsvalXleft représente un numéro de vente,
et parsvalXrigth représente la ligne du numéro de vente si vous voulez un peu plus de contexte
petite note : comme on vend plusieurs fois la même pièce keyX n'est pas une clé primaire,
je sais pas si ça change grand chose mais je préfère le dire)
et je voudrais le rentrer dans un tableau sous cette forme
COLONNE_A | COLONNE_B | COLONNE_C
key1 | parsval1left | parsval1rigth
key2 | parsval2left | parsval2rigth
......
Si vous voulez la méthode utilisée pour parser la voila
(la fonction je l'ai complètement pompée ailleurs je me rappelle plus vraiment où mais si vous avez quelque chose de plus simple je prend)
Comme je bosse sur SQL server 2014 pas de STRING_SPLIT dispo
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 CREATE FUNCTION [dbo].[udf-Str-Parse-8K] (@String varchar(max),@Delimiter varchar(10)) Returns Table As Return ( with cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)), cte2(N) As (Select Top (IsNull(DataLength(@String),0)) Row_Number() over (Order By (Select NULL)) From (Select N=1 From cte1 a,cte1 b,cte1 c,cte1 d) A ), cte3(N) As (Select 1 Union All Select t.N+DataLength(@Delimiter) From cte2 t Where Substring(@String,t.N,DataLength(@Delimiter)) = @Delimiter), cte4(N,L) As (Select S.N,IsNull(NullIf(CharIndex(@Delimiter,@String,s.N),0)-S.N,8000) From cte3 S) Select RetSeq = Row_Number() over (Order By A.N) ,RetVal = Substring(@String, A.N, A.L) From cte4 A ); SELECT start.Part_No, B.* FROM PARADEMODW.dbo.Oracle_Report_Brut_Splitted AS start cross Apply [dbo].[udf-Str-Parse-8k](start.SO_No_SO_Line_No, '/') As B WHERE start.Reference LIKE '%STOCK%' AND Reference NOT LIKE '%PREV%'
Merci a ceux et qui prennent le temps de lire et/ou de répondre
Gardez le feu brûlant dans votre cœur
Partager