Я работаю над запросом на основе CTE. Я никогда не использовал это раньше. Я использую следующий запрос, который получает записи из таблицы user_detail.
with cte as ( select cust_ID, parentid, name, joinside,regdate,package,null lnode, null rnode from user_detail
where cust_ID = @nodeid
union all select t.cust_ID, t.parentid,t.name, t.joinside,t.regdate,t.package,
ISNULL(cte.lnode, CASE WHEN t.joinside = 0 THEN 1 ELSE 0 END) lnode,
ISNULL(cte.rnode, CASE WHEN t.joinside = 1 THEN 1 ELSE 0 END) rnode from user_detail
t inner join cte on cte.cust_ID = t.parentid )
select @nodeid nodeid,name,cust_ID,parentid,regdate,package from cte
where rnode='0' order by cust_id asc option (maxrecursion 0)
Вышеупомянутый запрос дает мне 6 столбцов (nodeid, name, cust_ID, parentid, regdate, package).
Теперь, что я на самом деле хочу, я хочу 7-й столбец, который будет считать строки на основе cust_id из других частей таблицы.
Я делаю, как показано ниже, но когда я добавляю группу в запросе, это дает мне ошибку ..
declare @nodeid int = '1';
with cte as ( select cust_ID, parentid, name, joinside,regdate,package,null lnode, null rnode from user_detail
where cust_ID = @nodeid
union all select t.cust_ID, t.parentid,t.name, t.joinside,t.regdate,t.package,
ISNULL(cte.lnode, CASE WHEN t.joinside = 0 THEN 1 ELSE 0 END) lnode,
ISNULL(cte.rnode, CASE WHEN t.joinside = 1 THEN 1 ELSE 0 END) rnode from user_detail
t inner join cte on cte.cust_ID = t.parentid )
select @nodeid nodeid,name,ctttt.cust_ID,parentid,regdate,package,insttt.cust_id from cte as ctttt left join installments as insttt
on ctttt.cust_id = insttt.cust_id
where rnode='0' order by ctttt.cust_id asc option (maxrecursion 0)