SQL CASE添加了额外的列

时间:2017-06-25 09:14:00

标签: sql oracle null case

我正在尝试使用CASE运算符(在Oracle中)进行NULL替换:

SELECT 
 orderID, 
 shippedDate,
CASE WHEN shippedDate IS NULL 
 THEN 'Not Shipped' 
 END 
FROM ORDERS
WHERE SHIPPEDDATE is NULL;

但由于某种原因,它会添加一个带有替换值的额外列,而不是替换SHIPPEDDATE null-value:

extra column

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您在select语句中显示3个值,这就是您收到此类输出的原因。仅显示order_id和case_value。

使用此查询:

SELECT 
 orderID, 
CASE 
  WHEN shippedDate IS NULL THEN 'Not Shipped'
  END 
 AS shippedFinalDate
FROM ORDERS
WHERE SHIPPEDDATE is NULL;

答案 1 :(得分:1)

您只需要排除实际的ShippedDate列。如果您不想要它,那么请不要包含它。 CASE声明无需工作。

SELECT 
  orderID, 
  CASE WHEN shippedDate IS NULL 
   THEN 'Not Shipped'
   ELSE 'Shipped'
  END 
FROM ORDERS
WHERE SHIPPEDDATE is NULL;