Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何从CASE语句返回所有其他结果_Oracle_Case_Oracle Sqldeveloper_Case Statement - Fatal编程技术网

Oracle 如何从CASE语句返回所有其他结果

Oracle 如何从CASE语句返回所有其他结果,oracle,case,oracle-sqldeveloper,case-statement,Oracle,Case,Oracle Sqldeveloper,Case Statement,我希望我的UCO列显示数字1或2,我希望返回实际数字的任何其他内容。这可以是任何数字。但是,由于我的case语句,它当前显示为空 你知道如何显示真实的数字吗 SELECT S.STOPP_REAL_DELIVERY AS "Delivery Date", case when C.COLLECT_COLLECTED_QTY = '-1' THEN '1' when C.COLLECT_COLLECTED_QTY = '-2' THEN '2' END AS UCO FROM MBR_COL

我希望我的UCO列显示数字1或2,我希望返回实际数字的任何其他内容。这可以是任何数字。但是,由于我的case语句,它当前显示为空

你知道如何显示真实的数字吗

SELECT S.STOPP_REAL_DELIVERY AS "Delivery Date",
  case when C.COLLECT_COLLECTED_QTY = '-1' THEN '1'
  when C.COLLECT_COLLECTED_QTY = '-2' THEN '2' END AS UCO
FROM MBR_COLLECT C,
  MBR_STOPP S,
  MBR_JOURNEY J
WHERE C.MARKET_CODE          = 'UK'
AND C.COLLECT_TYPE_CODE      = 4
AND C.STOPP_ID               = S.STOPP_ID
AND J.JOURNEY_ID             = S.JOURNEY_ID
AND J.JOURNEY_PLANNED_START >= '14-AUG-17';

ELSE
子句添加到
CASE
语句中:

SELECT S.STOPP_REAL_DELIVERY AS "Delivery Date",
       CASE
       WHEN C.COLLECT_COLLECTED_QTY = '-1' THEN '1'
       WHEN C.COLLECT_COLLECTED_QTY = '-2' THEN '2'
       ELSE C.COLLECT_COLLECTED_QTY
       END AS UCO
FROM   MBR_COLLECT C
       INNER JOIN MBR_STOPP S
       ON ( C.STOPP_ID   = S.STOPP_ID )
       INNER JOIN MBR_JOURNEY J
       ON ( J.JOURNEY_ID = S.JOURNEY_ID )
WHERE  C.MARKET_CODE          = 'UK'
AND    C.COLLECT_TYPE_CODE      = 4
AND    J.JOURNEY_PLANNED_START >= DATE '2017-08-14';
此外:

  • 使用ANSI连接语法(而不是传统的逗号连接语法),因为这样可以更容易地查看表是如何连接的,并且可以避免来自旧的
    (+)
    语法的错误
  • '14-AUG-17'
    不是日期文字-它是字符串文字。如果将其与日期列进行比较,Oracle将尝试将其隐式转换为日期文字,但这将使用
    NLS\u date\u FORMAT
    会话变量作为格式掩码来完成;此值是按每个用户会话设置的,每个用户都可以更改自己的设置。如果您依赖默认设置,并且用户更改了它,那么您的查询将中断该用户(而不是其他用户)的查询(没有更改查询),并且调试将非常困难。使用ANSI日期文字代替日期“2017-08-14”,或明确说明格式掩码(如果您使用的是特定语言的月份名称,则还应说明语言)
    至日期('14-AUG-17'、'DD-MON-RR'、'NLS_language=“ENGLISH”)

  • ELSE
    子句添加到
    CASE
    语句中:

    SELECT S.STOPP_REAL_DELIVERY AS "Delivery Date",
           CASE
           WHEN C.COLLECT_COLLECTED_QTY = '-1' THEN '1'
           WHEN C.COLLECT_COLLECTED_QTY = '-2' THEN '2'
           ELSE C.COLLECT_COLLECTED_QTY
           END AS UCO
    FROM   MBR_COLLECT C
           INNER JOIN MBR_STOPP S
           ON ( C.STOPP_ID   = S.STOPP_ID )
           INNER JOIN MBR_JOURNEY J
           ON ( J.JOURNEY_ID = S.JOURNEY_ID )
    WHERE  C.MARKET_CODE          = 'UK'
    AND    C.COLLECT_TYPE_CODE      = 4
    AND    J.JOURNEY_PLANNED_START >= DATE '2017-08-14';
    
    此外:

  • 使用ANSI连接语法(而不是传统的逗号连接语法),因为这样可以更容易地查看表是如何连接的,并且可以避免来自旧的
    (+)
    语法的错误
  • '14-AUG-17'
    不是日期文字-它是字符串文字。如果将其与日期列进行比较,Oracle将尝试将其隐式转换为日期文字,但这将使用
    NLS\u date\u FORMAT
    会话变量作为格式掩码来完成;此值是按每个用户会话设置的,每个用户都可以更改自己的设置。如果您依赖默认设置,并且用户更改了它,那么您的查询将中断该用户(而不是其他用户)的查询(没有更改查询),并且调试将非常困难。使用ANSI日期文字代替日期“2017-08-14”,或明确说明格式掩码(如果您使用的是特定语言的月份名称,则还应说明语言)
    至日期('14-AUG-17'、'DD-MON-RR'、'NLS_language=“ENGLISH”)

  • 你应该添加其他你应该添加其他