sql - 在带有 IN 条件的 where 子句中使用 CASE

标签 sql sql-server-2008

我有下面的代码,需要基于参数的情况条件。这可以实现吗?如何使用这种类型的sql..我没有看到任何变体方法可以在没有大小写的情况下执行此操作

BEGIN
DECLARE @INPUT AS VARCHAR(256)
set @input = 'NASS'
SELECT
sum(TRY_PARSE(DV.[ERSDataValues_AttributeValue1] as decimal)) AS NEWVALUE

FROM [VegetablesCoSD-Full].[CoSD].[ERSDataValues] DV LEFT JOIN [CoSD].        [ERSTimeDimension_LU] TD

ON DV.ERSDataValues_ERSTimeDimension_ID = TD.ERSTimeDimension_ID

WHERE DV.ERSDataValues_ERSStatisticType_ID1 = 45 AND 
DV.ERSDataValues_ERSCommodity_ID = 519 AND
DV.ERSDataValues_ERSGeography_ID = 3346 AND
DV.ERSDataValues_ERSUnit_ID1 = 89 AND         

TD.ERSTimeDimension_TimeDimensionType_ID = 11 and 
CASE  
when @INPUT = 'NASS' THEN
TD.ERSTimeDimension_Month in   

('1','2','3','4','5','6','7','8','9','10','11','12')
WHEN @INPUT = 'BLS' THEN
TD.ERSTimeDimension_Month IN('JAN','FEB')
END

最佳答案

您可以使用 OR 代替,如下所示:

AND
(   (@INPUT = 'MASS' AND TD.ERSTimeDimension_Month in ('1','2','3','4','5','6','7','8','9','10','11','12'))
    OR
    (@INPUT = 'BLS' AND TD.ERSTimeDimension_Month IN('JAN','FEB')
)

关于sql - 在带有 IN 条件的 where 子句中使用 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125160/

相关文章:

sql - 将任意 SQL SELECT TOP(x) 转换为 SELECT COUNT(*)?

java - SQLite:结果集返回 SQLException

php - 将句子中的数组转换为字符串

c# - 首先使用 EF 代码将 datetime2 数据类型转换为 datetime 数据类型错误?

sql-server - 如何编写一个 SQL 查询来查找数据库中所有列和所有表中的值?

c# - 当字段具有 NULL 值时,SQL WHERE 子句不返回行

sql - 使用不同的东西/for xml 路径 ('' )

SQL Math 更新性能优化

performance - 递归 CTE 导致缓慢和索引扫描

SQL - 合并两个表,每个表都有一些唯一的列