gpt4 book ai didi

sql - TSQL 可选 Where 子句

转载 作者:行者123 更新时间:2023-12-05 09:22:47 25 4
gpt4 key购买 nike

我有一个查询,默认情况下会为我提取当月的数据。然后我的页面上有一个“过滤器”选项,他们可以在其中输入一些数据以过滤内容并重新运行查询。

我的选择语句适用于当月,但我不太确定如何为不包含内容的字段实现逻辑。

示例:如果用户在过滤器选项中填写开始和结束日期,则需要使用这些日期而不是当前月份/年份的默认日期。

对我来说棘手的部分是部门和类别。如果过滤器中有值,它需要仅根据这些值查找提交 category=3 department=5。但是,当过滤器设置为空时,无论值是多少,它都需要忽略类别和部门并为我获取记录。

这是我目前的SP:

 IF (@action = 'filter')
BEGIN
SELECT A.[submissionID],
A.[subEmpID],
A.[nomineeEmpID],
CONVERT (VARCHAR (10), A.[submissionDate], 101) AS submissionDate,
A.[situation],
A.[task],
A.[action],
A.[result],
A.[timestamp],
A.[statusID],
A.[approver],
A.[approvalDate],
B.[FirstName] + ' ' + B.[LastName] AS nomineeName,
B.[ntid] AS nomineeNTID,
B.[qid] AS nomineeQID,
C.[FirstName] + ' ' + C.[LastName] AS submitName,
C.[ntid] AS submitNTID,
D.[categoryName]
FROM empowermentSubmissions AS A
INNER JOIN
empTable AS B
ON A.[nomineeEmpID] = B.[empID]
INNER JOIN
empTable AS C
ON A.[subEmpID] = C.[empID]
INNER JOIN
empowermentCategories AS D
ON A.[categoryID] = D.[catID]
WHERE DATEPART(m, A.[submissionDate]) = MONTH(getdate())
AND DATEPART(yyyy, A.[submissionDate]) = YEAR(getdate())
FOR XML PATH ('data'), TYPE, ELEMENTS, ROOT ('root');
END

enter image description here

最佳答案

通过查看 “如果过滤器中有一个值,它需要仅根据这些值 category=3 department=5 查找提交。但是,当过滤器设置中那些为空时,它需要忽略类别和部门,不管值是多少,都给我记录。”

假设您在名为 @Filter 的参数中有过滤器值,您可以执行如下操作

Where (@Filter is null OR (@Filter is not null and category=3 and department=5))

更新

没有注意到你有两个参数

Where (@category is null or (category = @category))
and (@department is null or (department= @department))

关于sql - TSQL 可选 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24658172/

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