如何在db2中使用Case时使用Case

时间:2013-06-06 16:33:55

标签: sql db2

我想在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  

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

请给我任何建议/示例查询来检索Role.Thanks。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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
)