在SQL Server中带有在子句之间的案例声明

蜘蛛

我习惯使用默认值''将参数获取到存储过程中。我想检查是否选择了日期,如果要选择,请执行“我之间的条款”。在正常情况下,我会这样做

SELECT tbl1.Column1,tbl1.Column2 FROM table1 tbl1
WHERE tbl1.Column1 = CASE WHEN @Column1Val = '' THEN tbl1.Column1 ELSE @Column1Val END

但是我无法使用“之间”子句来做到这一点。除了动态查询之外,我没有其他方法可以做到这一点。除了动态查询,还有其他方法吗?

这就是我想要做的

SELECT tbl1.Column1,tbl1.Column2 FROM table1 tbl1
WHERE tbl1.txnDate = CASE WHEN @DateTo = '1900-01-01' AND @DateFrom = '1900-01-01' 
                          THEN  CAST(tbl1.txnDate AS DATE) 
                          ELSE CAST(tbl1.txnDate  AS DATE) BETWEEN @DateTo AND @DateFrom 
                     END
shree.pat18

试试这个:

SELECT tbl1.Column1,tbl1.Column2 
FROM table1 tbl1
WHERE 
(@DateTo = '1900-01-01' AND @DateFrom = '1900-01-01')
OR 
(
 NOT (@DateTo = '1900-01-01' AND @DateFrom = '1900-01-01') 
 AND (CAST(tbl1.txnDate  AS DATE) BETWEEN @DateFrom AND @DateTo)
 )

据我了解,“ 1900-01-01”是您的开始日期和结束日期的默认值,因此仅当用户为开始日期和结束日期选择了一些非默认值时,才需要过滤器。请让我知道这是否是您需要的。

演示版

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章