Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL,介于和大小写之间(3个条件参数)_Sql_Sql Server_Case_Reportingservices 2005_Between - Fatal编程技术网

SQL,介于和大小写之间(3个条件参数)

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)

我在一些SQL上遇到了一个CASE条件

它是SSRS2005报告的后端,用户可以选择ALL、<50k或>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)
选择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

工作起来很有魅力。谢天谢地。谢谢