Bonjour à tous,

pouvez vous m'expliquer ce que fait cette CTE qui permet de concaténer des mots que j'ai trouvé ici http://sqlpro.developpez.com/cours/s...te-recursives/


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
WITH
phrases (phrase, id, position)
AS
(
SELECT CAST(PHR_MOT AS VARCHAR(max))
      + CASE
           WHEN SUBSTRING(PHR_MOT, LEN(PHR_MOT), 1) = '''' THEN ''
           ELSE ' '
        END, PHR_ID, PHR_MOT_POSITION
FROM   T_PHRASE_PHR
WHERE  PHR_MOT_POSITION = 1
UNION ALL
SELECT phrase + CAST(PHR_MOT AS VARCHAR(max))
             + CASE
                  WHEN SUBSTRING(PHR_MOT, LEN(PHR_MOT), 1) = '''' THEN ''
                  ELSE ' '
               END AS PHRASE,
      PHR_ID, PHR_MOT_POSITION
FROM   T_PHRASE_PHR AS suiv
      INNER JOIN phrases
            ON suiv.PHR_ID = phrases.id
               AND suiv.PHR_MOT_POSITION = phrases.position + 1
),
maxphrase
AS
(
SELECT id, MAX(position) AS maxposition
FROM   phrases
GROUP  BY id
)
SELECT P.id, RTRIM(phrase) + '.' AS PHRASE
FROM   phrases AS P
      INNER JOIN maxphrase AS M
            ON P.id = M.id
               AND P.position = M.maxposition
ORDER  BY id
Merci