gpt4 book ai didi

t-sql - 根据函数规范排除 where 子句

转载 作者:行者123 更新时间:2023-12-02 15:37:07 25 4
gpt4 key购买 nike

我开发了以下功能:

create function kv_fn_ValuationPerItem_AW (@dDate date, @active bit)
returns table
as

return
(
select
Code ItemCode
, Description_1 ItemDescription
, ItemGroup
, Qty_On_Hand CurrentQtyOnHand
, AveUCst CurrentAvgCost
, Qty_On_Hand*AveUCst CurrentValue

from _bvSTTransactionsFull t
inner join StkItem s on t.AccountLink = s.StockLink
where ServiceItem = 0
and ItemActive = @active
and TxDate <= @dDate
group by Code, Description_1, ItemGroup, Qty_On_Hand, AveUCst
)

该函数需要两个参数:

  1. 日期
  2. 该项目是否处于事件状态 - 1 = 事件且 0 = 不活动

如果我使用上面规定的函数,通过为事件参数指定 1,那么结果将仅适用于事件项目。

如果我指定0,那么它将返回所有非事件项目。

如何更改此功能以适应事件项目或事件和非事件项目?

即如果参数为1,则where子句应读取为ItemActive = @active,但当参数为0时,where子句应读取为ItemActive in (1,0),如何更改函数以使其像这样工作?

我尝试了一个案例,但我的语法不正确......

最佳答案

这就像在 where 子句中添加 or 一样简单:

...

and         (ItemActive = 1 OR @active = 0)

...

顺便说一句,您可能想这样做:

and         (ItemActive = @active OR @active IS NULL)

这意味着当您将 1 作为 @active 传入时,您将仅获得事件项目,当您传入 0 时,您将仅获得事件项目只会获取非事件成员,但当您传入 null 时,您将获取所有记录,无论 ItemActive 列中的值如何。

关于t-sql - 根据函数规范排除 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57670260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com