我想在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。
答案 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的字符串值。
演示:
答案 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
)