我需要根据我的条件从表中选择一些记录。我只需要这样做。
SELECT g.intds_intratechange
case when g.intds_intratechange='0.5% Up to 1%'
then g.intds_intratechange='ddd'
end
FROM glinfo.ref_tblintratefordesignation g
WHERE g.intds_designation =(select s.STR_OFF_TYPE from dpg.inf_responsible_maildetails s where s.STR_USER_CODE='10020336')
在上表中,有3个值。 “0 t0 0.5”,“0.5到1”和“大于1”。 我需要从我的选择中过滤记录以符合上述值。如果值为“0到0.5”,则选择前10个记录。 需要一种方法来解决这个问题。这段代码说“无法从预期的关键字中获取”
答案 0 :(得分:1)
您可以使用BETWEEN
来检查这些条件。我假设您的g.intds_intratechange
列末尾有'%'
。如果可能不需要TRIM(g.intds_intratechange,'%')
或TO_NUMBER
。
SELECT
g.intds_intratechange,
case when TO_NUMBER(TRIM(g.intds_intratechange,'%')) BETWEEN 0 AND 0.5 THEN 'ddd'
when TO_NUMBER(TRIM(g.intds_intratechange,'%')) BETWEEN 0.5 AND 1 THEN 'whatever_u_need'
when TO_NUMBER(TRIM(g.intds_intratechange,'%')) > 1 THEN 'whatever_u_need'
end name_of_new_col
FROM
glinfo.ref_tblintratefordesignation g
WHERE g.intds_designation IN
(select
s.STR_OFF_TYPE
from
dpg.inf_responsible_maildetails s
where s.STR_USER_CODE='10020336'
);
如果值是" 0到0.5"然后选择前10条记录。需要一种方法 解决这个问题。
不完全清楚你的意思。请在问题中添加更多详细信息。