【问题标题】:CASE STATEMENT INSIDE SELECT WITH CONDITION ORACLESELECT WITH CONDITION ORACLE 中的案例声明
【发布时间】:2017-11-17 04:45:01
【问题描述】:

我需要根据我的条件从表中选择一些记录。只是我需要这样做。

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 条记录。 需要一种方法来解决这个问题。此代码显示“无法从预期的关键字中找到”

【问题讨论】:

  • 滴度,这样的问题需要一些数据。提供您的数据样本,我们可以以更大的确定性更快地提供帮助(并且向您提供更少的问题)只需将 一些 数据简单地复制/复制到格式化为表格的问题中通常就足够了。

标签: oracle


【解决方案1】:

您可以使用BETWEEN 来检查这些条件。我假设您的g.intds_intratechange 列最后有一个'%'。 If Not 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 条记录。需要一个方法 解决这个问题。

不完全清楚你的意思。请在问题中添加更多详细信息。

【讨论】:

  • 感谢 kaushik。这正是我需要的。但我最后没有使用 % 。所以我确实像你说的那样。但出现错误提示“无效号码”
  • 这意味着您的g.intds_intratechange 列包含非数字字符。
  • 这就是我需要的。我有一个返回许多记录的选择语句。现在我需要将此选择过滤到某些条件。有 5 种用户类型。 “导演”、“总经理”……等等。有一个与此用户类型链接的表。所以我需要根据这个用户类型过滤我的选择。如果是“Director”,则选择前 10 条记录。如果是“Gen Manager”,则同样选择 10 到 25 条记录。上面的代码是我的尝试。但还没有解决方案
  • 所以我需要更改表中的数据吗?我需要添加 3 个范围。 0 到 0.5 、0.5 到 1 和大于 1。我该怎么做?
  • 使用链接stackoverflow.com/questions/7957423/…中的查询来查找非数字字符。然后我们可以使用适当的 TRIM ,替换函数以在 select 语句中消除它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多