-1

I'm trying to write a query, that selects a number of values. I only want it to select one of the values if it isn't null.

I'm trying to use a case when but it is erroring.

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
benjiiiii
  • 468
  • 8
  • 30

1 Answers1

2

Null is a tricky beast, you can't use equality operands on it. Also your else clause was returning a CHAR when the first clause returns a FLOAT :

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

A simpler way to achieve your goal is to use COALESCE :

COALESCE(ROUND(qty_picked / stk.pallet_unit_qty, 2),0) as [pltCheck]
Stavr00
  • 3,052
  • 1
  • 15
  • 26