Oracle 如何从CASE语句返回所有其他结果
我希望我的UCO列显示数字1或2,我希望返回实际数字的任何其他内容。这可以是任何数字。但是,由于我的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
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';
此外:
(+)
语法的错误'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';
此外:
(+)
语法的错误'14-AUG-17'
不是日期文字-它是字符串文字。如果将其与日期列进行比较,Oracle将尝试将其隐式转换为日期文字,但这将使用NLS\u date\u FORMAT
会话变量作为格式掩码来完成;此值是按每个用户会话设置的,每个用户都可以更改自己的设置。如果您依赖默认设置,并且用户更改了它,那么您的查询将中断该用户(而不是其他用户)的查询(没有更改查询),并且调试将非常困难。使用ANSI日期文字代替日期“2017-08-14”,或明确说明格式掩码(如果您使用的是特定语言的月份名称,则还应说明语言)至日期('14-AUG-17'、'DD-MON-RR'、'NLS_language=“ENGLISH”)
你应该添加其他你应该添加其他