test와 test2를 구분할 수 있는 방법이 먼저 있어야 하겠습니다.
test와 test2를 구분할 수 있는 명확한 구분방법이 있다면
unpivot 한 결과를 다시 pivot 하면 가능합니다.
일단 예제에서는 %20 으로 나눈 나머지 값으로 그룹핑을 했습니다.
select name
, MAX(case when test BETWEEN 10 AND 20 then test else 0 end) test1
, MAX(case when test BETWEEN 30 AND 40 then test else 0 end) test2
, MAX(case when test BETWEEN 10 AND 20 then test2 else '' end) test3
, MAX(case when test BETWEEN 30 AND 40 then test2 else '' end) test4
from (
select u.name, u.test, u.test2
from
(
select name, col1,col2,col3,col4
from test
) as a
unpivot ( test for test2 in (col1,col2,col3,col4)) u
) A
group by name,test%20
order by test%20 desc
도움이 되셨기를
감사합니다.