SQL Server 的新手,尝试编写一个查询,根据呈现给报表用户的选项更改 where 语句。我想选择一个位置并查看该位置的项目是否符合特定条件。标准根据位置而变化。我对每个选项都有工作查询,但想使用一个报告来检查每个位置。
SELECT
Stuff
FROM
Table1
INNER JOIN Table2
ON Table1.ID = Table2.ID
WHERE
Table2.DefaultIPGateway0 LIKE N'10.'+(@Site)+'.%'
AND Table2.IPAddress0 LIKE N'10.%'
Case
When (@Site) = "1" Then AND Table1.Name0 NOT LIKE N'ABC%' AND Table1.Name0 NOT LIKE N'ABD%'
When (@Site) = "2" Then AND Table1.Name0 NOT LIKE N'EFG%'
When (@Site) = "3" Then AND Table1.Name0 NOT LIKE N'HIJ%' AND Table1.Name0 NOT LIKE N'STU%' AND Table1.Name0 NOT LIKE N'MNO%'
End
最佳答案
您的查询不是有效的 SQL 语句,如果您想要使用 CASE
的 where 条件,您可以像下面这样更改您的查询。
SELECT Stuff
FROM Table1
INNER JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table2.DefaultIPGateway0 LIKE N'10.' + @Site + '.%'
AND Table2.IPAddress0 LIKE N'10.%'
AND (
CASE
WHEN @Site = '1'
AND Table1.Name0 NOT LIKE N'ABC%'
AND Table1.Name0 NOT LIKE N'ABD%'
THEN 1
WHEN @Site = '2'
AND Table1.Name0 NOT LIKE N'EFG%'
THEN 1
WHEN @Site = '3'
AND Table1.Name0 NOT LIKE N'HIJ%'
AND Table1.Name0 NOT LIKE N'STU%'
AND Table1.Name0 NOT LIKE N'MNO%'
THEN 1
ELSE 0
END
) = 1
关于sql - SQL 中基于所选选项的条件 Where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60275019/