Table:
x
col1 col2 col3
236 1234 lion
236 1234
235 1023
235 1234
234 1234
232 1234
232 1234 tiger
231 1234
231 1234 cat
Aim to create a col4 and copy value from col3 to col4 if (with partition by on col2):
Wherever “cat” is present in col3, then check if col1+5 exists, if yes then value of col3 from “cat” row goes to that col4(whose col1 value is cat’s “col1+5”)
output:
col1 col2 col3 col4
236 1234 lion
236 1234 cat
235 1023
235 1234
234 1234
232 1234
232 1234 tiger
231 1234
231 1234 cat
Advertisement
Answer
If I understand correctly, you can use left join
:
select t.*,
(case when t.col3 is null then t5.col3 end) as col4
from t left join
t t5
on t5.col1 = t.col1 + 5 and t5.col2 = t.col2 and t5.col3 = 'cat'