2013-11-26 98 views
0

我通過論壇搜查,但找不到一個崗位幫助我,所以這裏去SQL多案例ISNULL

我想拉基於兩個可能的情況下,一列數據,但我不能讓查詢工作,我不斷收到一個語法錯誤與我的>操作:

OnHandQty = CASE 
      WHEN job_order_view.job_numb like '5%' THEN isnull(q.ONHAND_QTY,1) > '0' 
      WHEN job_order_view.job_numb like '1%' THEN isnull(q.ONHAND_QTY,1) > '-1' 
      ELSE '-' 
     END 
+1

什麼RDBMS什麼結果你想要得到?表達式'isnull(thing,1)>'0''是一個布爾值。有些RDBMS將會像0或1那樣對待,但其他一些不會在語法上喜歡它。 –

+0

你究竟在努力完成什麼?你認爲你的案例陳述實際上會做什麼? – Andrew

+0

對不起,使用SQL Server。我希望以下事情發生: 如果符合訂單標準(類似於我的第一行中的'5%'),則將返回大於0的數量 如果工作標準(在我的第二行中是'1%'),大於-1的數量將被退回 – user2178462

回答

0

爲了達到預期的結果,我不得不封閉IIF()函數中的條件。

http://sqlfiddle.com/#!6/d41d8/12334

使用這個上面它的工作原理。如果我只留下1 > 1,我會得到相同的錯誤消息。

編輯:請注意,這是一個獨立的例子來說明如何實現這一點。你應該能夠很容易地適應你的代碼。

0

根據你說過(我仍然不知道它是有道理的),我會做這樣的事情:

isnull(q.ONHAND_QTY,1)> CASE 
      WHEN (job_order_view.job_numb like '5%') then ('0') 
      WHEN (job_order_view.job_numb like '1%') THEN ('-1') 
      ELSE '-' --What is this part supposed to do? 
     END 
0

試着這麼做

OnHandQty = CASE 
    WHEN job_order_view.job_numb like '5%' AND isnull(q.ONHAND_QTY,1) > '0' THEN isnull(q.ONHAND_QTY,1) 
     WHEN job_order_view.job_numb like '1%' AND isnull(q.ONHAND_QTY,1) > '-1' THEN isnull(q.ONHAND_QTY,1) 
     ELSE '-' 
    END