J'ai ci-dessous CTE récursive:COMMENT FAIRE: Inclure la colonne qui ne fait pas partie d'une fonction globale ou groupe par clause dans SQL Server
DECLARE @T AS TABLE
(
PARENT_TEST_ID int,
TEST_ID int,
VALIDATED int,
ERR int
)
INSERT INTO @T VALUES
(NULL, 1, 0, 0),
(NULL, 2, 0, 0),
(1,3,0, 0),
(1,4,0, 0),
(2,5,0, 0),
(2,6,0, 0),
(2,7,0, 0),
(7,8,0, 1)
;with C as
(
select TEST_ID, PARENT_TEST_ID, (CASE WHEN ERR=1 THEN 0 ELSE 1 END) AS VALIDATED, ERR
from @T
where TEST_ID not in (select PARENT_TEST_ID
from @T
where PARENT_TEST_ID is not null) AND PARENT_TEST_ID IS NOT NULL
union all
select
T.TEST_ID,
T.PARENT_TEST_ID,
(case when t.TEST_ID=c.PARENT_TEST_ID and c.VALIDATED=1 AND T.ERR=0 THEN 1 ELSE 0 END) as VALIDATED,
T.ERR
from @T as T
inner join C
on T.TEST_ID = C.PARENT_TEST_ID
)
SELECT DISTINCT PARENT_TEST_ID, TEST_ID, MIN(VALIDATED) FROM C
GROUP BY TEST_ID
Mais je ne peux pas inclure la colonne PARENT_TEST_ID dans le résultat SELECT car il ne fait pas partie du groupe par article, donc j'ai trouvé ce lien:
Including column that is not part of the group by
alors maintenant, je suis en train de faire la même chose dans mon cas, je suis en train d'appliquer la solution John Woo mais je ne sais pas comment. De l'aide? Ou toute autre meilleure solution?
Je Je vous ai donné une réponse à la question que vous avez posée, mais à partir de vos données de test, je ne pense pas que ce soit réellement ce que vous cherchez à faire. Pouvez-vous s'il vous plaît inclure votre sortie souhaitée si ma réponse ci-dessous n'est pas ce que vous essayez de faire? – iamdave