SQL,介于和大小写之间(3个条件参数)
我在一些SQL上遇到了一个CASE条件 它是SSRS2005报告的后端,用户可以选择ALL、<50k或>50k 勇气是SQL,介于和大小写之间(3个条件参数),sql,sql-server,case,reportingservices-2005,between,Sql,Sql Server,Case,Reportingservices 2005,Between,我在一些SQL上遇到了一个CASE条件 它是SSRS2005报告的后端,用户可以选择ALL、50k 勇气是 SELECT LOANAMOUNT FROM LOANS WHERE loanAmount (CASE WHEN @Parameter 'All' THEN = loanAmount --Ignore the variable ELSE @parameter = 1 THEN <= 50k ELSE @parameter = 2 THEN > 50K END CASE)
SELECT LOANAMOUNT
FROM LOANS
WHERE loanAmount (CASE WHEN @Parameter 'All' THEN = loanAmount --Ignore the variable
ELSE @parameter = 1 THEN <= 50k
ELSE @parameter = 2 THEN > 50K
END CASE)
选择LOANAMOUNT
贷款
其中loanAmount(当@Parameter'All'然后=loanAmount时的情况)——忽略变量
ELSE@parameter=1然后是50K
(完)
我遇到的问题是><符号。我可以考虑=的因素,但我不能告诉它得到所有,然后在这种情况下更改我的运算符
任何见解都会很好。谢谢我想这会是最快的
SELECT *
FROM LOANS
WHERE
(@Parameter = 'All') OR
(@Parameter = '1' AND loanAmount <= 50000) OR
(@Parameter = '2' AND loanAmount > 50000)
选择*
贷款
哪里
(@Parameter='All')或
(@参数='1'和loanAmount 50000)
注意,@参数必须是字符串类型,以便与'All'
、'1'
和'2'
进行比较
loanAmount是一个数字
50K
作为一个数字常量意味着没有任何东西,请使用整数。我认为这将是最快的
SELECT *
FROM LOANS
WHERE
(@Parameter = 'All') OR
(@Parameter = '1' AND loanAmount <= 50000) OR
(@Parameter = '2' AND loanAmount > 50000)
选择*
贷款
哪里
(@Parameter='All')或
(@参数='1'和loanAmount 50000)
注意,@参数必须是字符串类型,以便与'All'
、'1'
和'2'
进行比较
loanAmount是一个数字
50K
表示数字常量为零,请使用整数。您根本不需要大小写
SELECT LOANAMOUNT
FROM LOANS
WHERE @Parameter 'All'
OR (@parameter = '1' AND loanAmount <= 50000)
OR (@parameter = '2' AND loanAmount > 50000)
选择LOANAMOUNT
贷款
其中@Parameter'All'
或(@parameter='1'和loanAmount 50000)
您根本不需要案例
SELECT LOANAMOUNT
FROM LOANS
WHERE @Parameter 'All'
OR (@parameter = '1' AND loanAmount <= 50000)
OR (@parameter = '2' AND loanAmount > 50000)
选择LOANAMOUNT
贷款
其中@Parameter'All'
或(@parameter='1'和loanAmount 50000)
All=选择所有记录
或取决于@参数
值将被过滤
SELECT *
FROM LOANS
WHERE
(@Parameter = 'All') OR
(@Parameter = '1' AND loanAmount <= 50000) OR
(@Parameter = '2' AND loanAmount > 50000)
选择*
贷款
哪里
(@Parameter='All')或
(@参数='1'和loanAmount 50000)
All=选择所有记录
或取决于@参数
值将被过滤
SELECT *
FROM LOANS
WHERE
(@Parameter = 'All') OR
(@Parameter = '1' AND loanAmount <= 50000) OR
(@Parameter = '2' AND loanAmount > 50000)
选择*
贷款
哪里
(@Parameter='All')或
(@参数='1'和loanAmount 50000)
对于实际使用案例的解决方案:
SELECT LOANAMOUNT
FROM LOANS
WHERE CASE WHEN @Parameter = 'All' THEN 1
WHEN @Parameter = 1 AND loanAmount <= 50000 THEN 1
WHEN @Parameter = 2 AND loanAmount > 50000 THEN 1
ELSE 0
END = 1
选择LOANAMOUNT
贷款
当@Parameter='All'时,则为1
当@Parameter=1且loanAmount为50000时,则为1
其他0
结束=1
对于实际使用案例的解决方案:
SELECT LOANAMOUNT
FROM LOANS
WHERE CASE WHEN @Parameter = 'All' THEN 1
WHEN @Parameter = 1 AND loanAmount <= 50000 THEN 1
WHEN @Parameter = 2 AND loanAmount > 50000 THEN 1
ELSE 0
END = 1
选择LOANAMOUNT
贷款
当@Parameter='All'时,则为1
当@Parameter=1且loanAmount为50000时,则为1
其他0
结束=1
工作起来很有魅力。谢天谢地。谢谢