Я очень новичок в этом сайте, во всем.
И я не знал, как спросить. Так что я задал 1 проблему раньше (я отправил ее в качестве ответа), и я снова опубликовал решение, как я сделал Все ваши идеи помогли мне решить ее.
Теперь вот появилась новая проблема.
Я хочу построить столбцы, которые рассчитываются друг с другом. (Извините за мой английский)
Пример:
Id Column1 Column2 Column3
1 5 5 => Same as Column1 5 => Same as Column2
2 2 12 => column1 current + column2.prev + column3.previous = 2+5+5 17 => column2.current + column3.prev = 12+5
3 3 32 => 3+12+17 49 => 32+17
более простой способ увидеть:
Id Column1 Column2 Column3
1 5 5 => Same as Column1 5 => Same as Column2
2 2 12 => 2+5+5 17 => 12+5
3 3 32 => 3+12+17 49 => 32+17
так сложно ??? : - (
В предыдущей проблеме вычислялся Столбец3 с новым вычисляемым столбцом как Столбец2. Но теперь он должен быть обновлен с только что рассчитанным Column2 и предыдущей записью Column3. Если вы хотите взглянуть на предыдущий пост, здесь это .
Я с нетерпением жду любого ответа, и он будет оценен по достоинству. Заранее спасибо
Dok
Прежде всего, спасибо вам, ребята, за все ваши идеи.
Я снова объясняю, потому что это было не ясно.
Вот мой предыдущий рекурсивный код CTE. Он работает следующим образом: сначала вычислите column2 с предыдущей записью текущего столбца (c.Column2) в cteCalculation, а затем вычислите новый столбец 3 в cte2 с только что вычисленным column2 из cteCalculation.
/ скопировано из предыдущего поста /
;with cteCalculation as (
select t.Id, t.Column1, t.Column1 as Column2
from table_1 t
where t.Id = 1
union all
select t.Id, t.Column1, (t.Column1 + c.Column2) as Column2
from table_1 t
inner join cteCalculation c
on t.Id-1 = c.id
),
cte2 as(
select t.Id, t.Column1 as Column3
from table_1 t
where t.Id = 1
union all
select t.Id, (select column2+1 from cteCalculation c where c.id = t.id) as Column3
from table_1 t
inner join cte2 c2
on t.Id-1 = c2.id
)
select c.Id, c.Column1, c.Column2, c2.column3
from cteCalculation c
inner join cte2 c2 on c.id = c2. id
Теперь я хочу расширить его, как рассчитать 2 столбца с данными друг от друга. Значит, используйте 2nd, чтобы вычислить третий, и используйте 3rd, чтобы получить новые данные второго столбца. Надеюсь, ты сможешь получить это.
Dok