У меня есть ниже рекурсивного CTE:HOWTO: Включить столбец, который не является частью совокупной функции или группы по статье в 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
Но я не могу включить столбец PARENT_TEST_ID в результате SELECT, поскольку он не является частью группы по статье, так что я нашел эту ссылку:
Including column that is not part of the group by
так что теперь я пытаюсь сделать то же самое в моем случае, я пытаюсь применить решение John Woo, но я не знаю, как. Любая помощь? Или любое другое лучшее решение?
У меня есть если вы ответили на заданный вами вопрос, но из ваших тестовых данных я не думаю, что это на самом деле то, что вы хотите сделать. Можете ли вы указать желаемый результат, если мой ответ ниже - это не то, что вы пытаетесь сделать? – iamdave