这是不使用 unpivot 的解决方案。
with columns as (
  select level as colNum from dual connect by level <= 2
),
results as (
  select case colNum
              when 1 then Val1
              when 2 then Val2
            end Val,
         score
    from vals,
         columns
)
select * from results where val is not null
这是没有 WITH 子句的基本相同查询:
select case colNum
            when 1 then Val1
            when 2 then Val2
         end Val,
       score
  from vals,
       (select level as colNum from dual connect by level <= 2) columns
 where case colNum
            when 1 then Val1
            when 2 then Val2
         end is not null
或者更简洁一点
select *
  from ( select case colNum
                     when 1 then Val1
                     when 2 then Val2
                  end Val,
                score
           from vals,
                (select level as colNum from dual connect by level <= 2) columns
        ) results
 where val is not null