2015-08-03 44 views
0

我有一個SQL代碼類似如下如何在執行sql語句時賦予動態函數的變化工作?

 Select a.ItemCode, a.ItemDesc    
From fn_BOM_Material_Master('A', @AsOnDate, @RptDate, @BranchID, @CompID)a   
Left Outer Join fn_INV_AsOnDate_Stock(@StockDate, @AsOnDate, @RptDate, @BranchID, @CompID, @Finyear)b   
On a.ItemCode=b.ItemCode and b.WarehouseCode<>'WAP'   
and a.BranchID=b.BranchID and a.CompID=b.COmpID   
Where a.ItemNatureCode = 'F' and a.BranchID = @BranchID and a.CompID = @CompID   
Group by a.ItemCode, a.ItemDesc   
Having sum(b.CBQty)<=0 

這裏的問題是,即時通訊傳遞一個「@ShowZeroStock」值作爲位如果「@ShowZeroStock」值爲「1」,然後有不應該驗證或(即:應包括零歸還所有從表中的值)

因此,如何基於傳遞位值「@ShowZeroStock」更改查詢

我可以用「如果其他」條件在頂部和刪除其他部分,但對於冗長的查詢我不能這樣做。

回答

0

這是你想要的邏輯嗎?

Having sum(b.CBQty) <= 0 or @ShowZeroStock = 1 
+0

謝謝你的回答。事實上,我得到了一個適當的價值觀。讓我給客棧的細節。 1)對於sum(b.CBQty)<0「Im獲得6個結果集」2)對於sum(b.CBQty)= 0「我得到3個結果集」3)對於sum(b.CBQty)> 0:「我得到3個結果集」在結合所有我應該得到12個結果,但我得到56個結果集。這是對的嗎 ? – user3518479

+0

嗨,Gordon Linoff。我是sry我得到我以前的評論,因爲我有空值它返回n resulta,使用isnull(sum(b.CBQty),0)解決我的問題。再次感謝。 – user3518479