0

我想根据 SOA_VALUE 从表中检索 ROLE。即如果 SOA_VALUE 介于 100 和 500 之间,那么 ROLE 应该是 RSM。如果 SOA_VALUE 大于 500,那么 ROLE 应该是 TMM。SOA_VALUE 来自前端。

ROLE    CHANNEL    PLG     TRANTYPE     SOA_VALUE
ASM       GT       DETS    TRANSFER     0    
RSM       GT       DETS    TRANSFER     100  
TMM       GT       DETS    TRANSFER     500  

例如:如果 SOA_VALUE 是 122,那么角色应该是 RSM。

请给我任何建议/示例查询以检索角色。谢谢。

4

2 回答 2

0

请试试这个:

 SELECT CHANNEL,PLG,TRANTYPE,SOA_VALUE
    FROM TABLE_X          
      WHERE ROLE = (CASE 
    WHEN (120 >= 100 AND 120 <=500) THEN 'RSM'
    WHEN 120 > 500 THEN 'TMM'
    ELSE NULL
                   end)

将 120 替换为上面 SOA_VALUE 的字符串值。

演示:

http://sqlfiddle.com/#!2/72d7f/3

于 2013-06-06T17:32:41.230 回答
0

这个怎么样:

with t(input_soa_value) as (values 121) -- simulates input value
select role from table_x where soa_value = (
  select max(soa_value) from table_x, t where soa_value < input_soa_value
)
于 2013-06-06T18:54:12.027 回答