我有下面的递归CTE列:HOWTO:包括没有在SQL Server中的一个聚合函数或group by子句的一部分
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
但我不能包括在结果SELECT PARENT_TEST_ID列,因为它不是一部分GROUP BY子句的,所以我发现这个链接:
Including column that is not part of the group by
所以现在我试图做同样的在我的情况,我想申请吴宇森解决方案,但我不知道怎么办。任何帮助?还是其他的最佳解决方案?
我有给你一个你已经问过的问题的答案,但是从你的测试数据来看,我并不认为它实际上是你想要做的。如果我的回答不是你想要做的,你能否请你包括你想要的输出? – iamdave