Текущая таблица выглядит так:
Каждый объект имеет уникальное имя, его родительское имя и иерархию.
name parent hierarchy value
A A 1 100
B A 2 0.5
C B 3 0.5
Мой ожидаемый результат:
name parent hierarchy value
A A 1 100
B A 2 50
C B 3 25
Мой запрос
SELECT tb1.[name],
tb1.[parent],
tb1.[hierarchy],
CASE
WHEN tb1.[hierarchy]=1
THEN tb1.[value]
WHEN tb1.[hierarchy]=2
THEN tb1.[value]*tb2.[value]
AS [value]
FROM
table tb1
INNER JOIN
table tb2
ON
tb1.[parent]= tb2.[name]
Этот код работает, только если у нас есть иерархия 2. Как изменить его, чтобы он работал для любого числа значений иерархии.
EDIT:
Что если у него есть идентификатор, с помощью которого мы можем однозначно идентифицировать данные?
id name parent hierarchy value
1 A A 1 100
1 B A 2 50
1 C B 3 25
2 A A 1 30
2 D A 2 0.1