Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 CTE перемножить результат в рекурсии  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
SQL 2008

таблица примерно такая
ID    PARENT     VAL
5	3	        4.000000
3	2	         6.000000
.........................


нужно получить такое
ID    PARENT     VAL
5	3	        24.000000  -- (4*6)
3	2	         6.000000  -- (6)
.........................



то есть перемножить значения в самой рекурсии
я что затопорился с этим.....
14 авг 14, 11:52    [16440515]     Ответить | Цитировать Сообщить модератору
 Re: CTE перемножить результат в рекурсии  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
WITH Data AS(SELECT * FROM(VALUES(5,3,4),(3,2,6))T(ID,PARENT,VAL))
,Recurs AS
(
 SELECT D.ID,D.PARENT,D.VAL FROM Data D WHERE NOT EXISTS(SELECT * FROM Data DD WHERE DD.ID=D.PARENT)
 UNION ALL
 SELECT D.ID,D.PARENT,D.VAL*R.VAL
 FROM Data D JOIN Recurs R ON D.PARENT=R.ID
)
SELECT * FROM Recurs;
14 авг 14, 12:11    [16440665]     Ответить | Цитировать Сообщить модератору
 Re: CTE перемножить результат в рекурсии  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
Types don't match between the anchor and the recursive part in column "VAL" of recursive query "Recurs".
14 авг 14, 13:04    [16441035]     Ответить | Цитировать Сообщить модератору
 Re: CTE перемножить результат в рекурсии  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
michael R
Types don't match between the anchor and the recursive part in column "VAL" of recursive query "Recurs".
Пишите явный CAST
14 авг 14, 13:12    [16441097]     Ответить | Цитировать Сообщить модератору
 Re: CTE перемножить результат в рекурсии  [new]
michael R
Member

Откуда: из-за границы
Сообщений: 2113
YES !!
iap спасибо
14 авг 14, 13:18    [16441138]     Ответить | Цитировать Сообщить модератору
 Re: CTE перемножить результат в рекурсии  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
michael R
YES !!
iap спасибо
Только у Вас в примере неясно, как определять начальные записи рекурсии...
Я там извернулся, а что на самом деле?
14 авг 14, 13:53    [16441406]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить