Привет, у меня есть такая структура таблицы:
id-rank id name value rank
1-1 1 abc somevalue1 1
1-2 1 abc somevalue2 2
1-3 1 abc somevalue3 3
2-1 2 abc somevalue4 1
3-1 3 abc somevalue5 1
Здесь id-rank - это объединение id и rank. Теперь, если ранг больше 1 (скажем, 2), я хочу извлечь данные столбца значения для id-ранга 1-1, то есть somevalue1.
Вот sql, который я написал
select *
case when rank > 1 then (select value where id-rank = concat(id,'-',rank-1) from table)
else ''
from table
Ожидаемый вывод:
id-rank id name value rank new_value
1-1 1 abc somevalue1 1
1-2 1 abc somevalue2 2 somevalue1
1-3 1 abc somevalue3 3 somevalue2
2-1 2 abc somevalue4 1
3-1 3 abc somevalue5 1
Мой текущий вывод
id-rank id name value rank new_value
1-1 1 abc somevalue1 1
1-2 1 abc somevalue2 2 null
1-3 1 abc somevalue3 3 null
2-1 2 abc somevalue4 1
3-1 3 abc somevalue5 1
Но в столбце new_value я получаю значение null. Я думаю, это потому, что он сравнивает только соседние столбцы. Я новичок в sql, пожалуйста, дайте мне знать, если у кого-то есть решение для этого.
Заранее спасибо