SELECT语句中的IF语句

时间:2018-03-08 15:56:52

标签: sql select

我正在尝试编写一个选择多个值的查询。我只希望它选择其中一个值,如果它不是null。

我正在尝试使用案例,但它是错误的。

SELECT pick_no, 
   pd.product, 
   from_warehouse, 
   to_warehouse, 
   qty_pick, 
   qty_check, 
   qty_picked, 
   qty_checked, 
   long_description, 
   ROUND(qty_pick / stk.pallet_unit_qty, 2) as [PalletQty], 
   ph.date_picking,
   stk.bin_no,
   CASE WHEN qty_picked <> null
            THEN ROUND(qty_picked / stk.pallet_unit_qty, 2) as [pltCheck]
            ELSE '0' END

FROM

1 个答案:

答案 0 :(得分:2)

Null是一个棘手的野兽,你不能在它上面使用相等的操作数。当第一个子句返回CHAR时,你的else子句返回FLOAT

CASE WHEN qty_picked IS NOT NULL
        THEN ROUND(qty_picked / stk.pallet_unit_qty, 2) as [pltCheck]
        ELSE 0 END

实现目标的更简单方法是使用COALESCE

COALESCE(ROUND(qty_picked / stk.pallet_unit_qty, 2),0) as [pltCheck]