Oracle SQL 动态选择列名

Joe*_*Joe 1 sql oracle select

一位用户给了我一张如下所示的表格。

Name   HH08   HH09   HH10   HH11   HH12   HH13
Bob      2      3      4      2      7      1
Steve    2      9      3      2      2      5
Mike     2      2      2      2      3      2
Pat      1      0      2      0      0      0
Run Code Online (Sandbox Code Playgroud)

我需要一些 sql 来根据名称选择行,并根据运行查询时 sysdate 的当前小时选择列。

如果现在是上午 9:27 并且用户是 Steve,则 sql 需要选择 9 值。

是否有任何简单的sql可以做到这一点,或者我是否需要重组用户给我的表,这偶尔会发生。

提前致谢。

小智 5

尝试:

select case to_char(sysdate,'hh24')
           when '08' then hh08
           when '09' then hh09
           when '10' then hh10
           when '11' then hh11
           when '12' then hh12
           when '13' then hh13
       end OutputValue
from TableName
WHERE Name = 'Steve'
Run Code Online (Sandbox Code Playgroud)