【问题标题】:How to give change working of having function dynamicaly on executing an sql statement?如何在执行 sql 语句时动态改变功能?
【发布时间】:2015-08-03 11:12:56
【问题描述】:

我的 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”值为“1”,则我将“@ShowZeroStock”值作为位传递,那么不应验证或(即:应返回表中的所有值,包括零)

那么如何根据传递的位值“@ShowZeroStock”更改查询

我可以在顶部使用“If else”条件并删除 else 部分,但对于冗长的查询我不能这样做。

【问题讨论】:

    标签: sql sql-server-2005 sql-server-2012


    【解决方案1】:

    这是你想要的逻辑吗?

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

    【讨论】:

    • 感谢您的回答。确实,我得到了适当的值。让我详细介绍一下客栈。 1) 对于 sum(b.CBQty) 0:“我得到 3 个结果集”结合所有我应该得到 12 个结果,但我得到 56 个结果集。对吗?
    • 嗨,戈登·林诺夫。对不起,我收回了我之前的评论,因为我有 null 值它返回 n 结果,使用 isnull(sum(b.CBQty),0) 解决了我的问题。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 2011-07-02
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多