Bonjour,
J’insère le données suivant dans une table Log
Nom : Main_Table.PNG
Affichages : 215
Taille : 4,4 Ko
Après insertion dans la table, j'aimerais splitter les 3 autres colonnes afin d'obtenir ceci et de les inserer dans la table Detail_Log
Nom : Detail_Table.PNG
Affichages : 217
Taille : 5,7 Ko
Après recherche sur Internet, j'ai pu concocter la requête suivant qui permet de sortir les elements de la table Log suivant
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
 
WITH CTE AS (
     SELECT ID,
            split.a.value('.', 'NVARCHAR(MAX)') [Operations],
            ROW_NUMBER() OVER(ORDER BY ( SELECT 1)) RN
     FROM
     (
         SELECT ID,
                CAST('<A>' + REPLACE(OperationList, ';', '</A><A>') + '</A>' AS XML) AS [Operations]
         FROM dbo.TLog
     ) a
     CROSS APPLY Operations.nodes('/A') AS split(a)),
     CTE1 AS (
     SELECT ID,
            split.a.value('.', 'NVARCHAR(MAX)') [Dates],
            ROW_NUMBER() OVER(ORDER BY ( SELECT 1 )) RN
     FROM
     (
         SELECT ID,
                CAST('<A>' + REPLACE(DateList, ';', '</A><A>') + '</A>' AS XML) AS [Dates]
         FROM dbo.TLog
     ) aa
     CROSS APPLY Dates.nodes('/A') AS split(a)),
     CTE2 AS (
     SELECT ID,
            split.a.value('.', 'NVARCHAR(MAX)') [Amounts],
            ROW_NUMBER() OVER(ORDER BY ( SELECT 1 )) RN
     FROM
     (
         SELECT ID,
                CAST('<A>' + REPLACE(AmountList, ';', '</A><A>') + '</A>' AS XML) AS [Amounts]
         FROM dbo.TLog
     ) aaa
 
     SELECT 
         C.ID
        ,LTRIM(RTRIM(C.Operations))
        ,LTRIM(RTRIM(C1.Dates))
        ,LTRIM(RTRIM(C1.Amounts))
     FROM CTE C
     JOIN CTE1 C1 ON C1.RN = C.RN
     JOIN CTE2 C2 ON C2.RN = C.RN
     WHERE C.Operations != '' AND C1.Dates != '' AND C2.Amounts != '';
J'avoue ne pas trop connaitre les CTE ni non plus les XML, mais ca marche.
J'aurais besoin d'aide pour insérer le résultat de la requête dans la table Detail_Log depuis un Trigger After Insert
Merci d'avance.
Andry