【问题标题】:Dynamic Where Clause T-SQL varibable operator动态 Where 子句 MYSQL 变量运算符
【发布时间】:2017-08-22 10:36:59
【问题描述】:

我正在尝试根据存储过程的输入变量在我的 sql 中设置 where 条件。

Where RF.InternalCompany = @Company  
And RF.Installdate between @Datefrom  and @DateTo
AND CASE WHEN @ContractType = 'Single Asset Contract' THEN numA.NumOfAssets = 1 
    WHEN @ContractType = 'Multi-Asset Contract' THEN numA.NumOfAssets > 1
    END

如何设置?

【问题讨论】:

  • 您是要在此处设置一个变量,还是要在WHERE 子句的逻辑中使用该变量?

标签: sql-server tsql dynamic sql-server-2012 where-clause


【解决方案1】:

像下面这样改变它..

Where RF.InternalCompany = @Company  
And RF.Installdate between @Datefrom  and @DateTo
AND ((@ContractType = 'Single Asset Contract' AND     numA.NumOfAssets = 1 ) Or 
(@ContractType = 'Multi-Asset Contract' AND numA.NumOfAssets > 1))

【讨论】:

  • 非常感谢!
【解决方案2】:
AND 
(
    ( @ContractType = 'Single Asset Contract' AND numA.NumOfAssets = 1 )
    OR 
    ( @ContractType = 'Multi-Asset Contract'  AND numA.NumOfAssets > 1 )
)

【讨论】:

  • 谢谢...我知道它必须简单...这是漫长的一天
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-19
相关资源
最近更新 更多