oraclesql中字段公式的DRY

oraclesql中字段公式的DRY,sql,oracle,Sql,Oracle,Oracle中的一些SQL如下所示: SELECT CASE WHEN field1 - field2 + field3 < 0 THEN 0 ELSE field1 - field2 + field3 END 我们希望指定field1-field2+field3一次,同时不改变SELECT查询的输出。有什么好办法吗 另一种方法是,如果有一个函数可以返回大于0的数值,并且对于负值也可以返回0。请使用: 像这样的。如果将其

Oracle中的一些SQL如下所示:

SELECT
  CASE
    WHEN
      field1 - field2 + field3 < 0
    THEN
      0
    ELSE
      field1 - field2 + field3
  END
我们希望指定field1-field2+field3一次,同时不改变SELECT查询的输出。有什么好办法吗

另一种方法是,如果有一个函数可以返回大于0的数值,并且对于负值也可以返回0。

请使用:


像这样的。如果将其包装在存储过程中,则可以返回结果

DECLARE
    n number := field1 - field2 + field3;
BEGIN
   CASE
       WHEN
           n < 0
       THEN
           0
       ELSE
           n
   END CASE
END;
尝试:

DECLARE
    n number := field1 - field2 + field3;
BEGIN
   CASE
       WHEN
           n < 0
       THEN
           0
       ELSE
           n
   END CASE
END;
SELECT
  CASE
    WHEN
      expr < 0
    THEN
      0
    ELSE
      expr
  END
FROM (SELECT field1 - field2 + field3 as expr
      FROM ... );