【问题标题】:IF ELSE condition on ORACLEORACLE 上的 IF ELSE 条件
【发布时间】:2014-02-21 22:25:58
【问题描述】:

我正在尝试在 Oracle 上发出 sql 请求,但我遇到了一些问题。我有这句话要翻译,我不知道怎么翻译..你能帮我吗?我该如何翻译它? :(

IF(CODE="fuu")
THEN(SELECT bar FROM TABLE)
ELSE(we return 0)

谢谢你的建议。

编辑:

我的要求是这样的

SELECT distinct
  A, B, C, D, E,
  SUM(F+G+H) AS "FGH",
  SUM(I -(FGH)) AS "I",
  CASE WHEN code='fuu' THEN bar ELSE 0 END AS AS "What I need"
FROM
  TABLE
WHERE 
  A=20
GROUP BY
  A, B, C, D, E;

此解决方案有效,但我没有很好的答案。实际上应该是 A=20 -> bar = 7598 而不是 0;

【问题讨论】:

  • 您想在 SQL 或 PL/SQL 中执行此操作吗?
  • 我想在 SQL 中执行此操作。
  • select bar from the_table where code = 'fuu'; 有什么问题
  • @a_horse_with_no_name :您的解决方案是完美的原因,当代码不是 fuu 时返回 0。但我有下一个错误:01427. 00000 - “单行子查询返回多行”
  • 我删除了我的答案,因为我意识到它不适用于您的 GROUP BY。我们需要知道codebar 列与(A,B,C,D,E) 分组的关系。一些示例输入和输出可能有助于使其更清晰。

标签: oracle if-statement conditional-statements


【解决方案1】:

SQL 中的 case 表达式等价于其他语言中的 IF 语句:

CASE WHEN condition THEN value1 [ ELSE value2 ] END

我猜你正在寻找这样的东西:

SELECT distinct
  A, B, C, D, E,
  SUM(F+G+H) AS "FGH",
  SUM(I -(FGH)) AS "I",
  CASE WHEN CODE='fuu' THEN bar ELSE 0 END As "What I need"
FROM
  TABLE
WHERE 
  A=20
GROUP BY
  A, B, C,  D, E, "What I need"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多