use*_*432 3 sql t-sql sql-server case
我有以下查询:
SELECT *
FROM dbo.tblOrders o
WHERE o.OrderId IN (SELECT [Value] FROM [dbo].[udf_GenerateVarcharTableFromStringList](@OrderId, ','))
AND
@ActiveInactive =
CASE
WHEN 'Active' THEN (o.[orderactivedate] > o.[orderinactivedate])
WHEN 'Inactive' THEN (o.[orderactivedate] < o.[orderinactivedate])
END
Run Code Online (Sandbox Code Playgroud)
这回来了
An expression of non-boolean type specified in a context where a condition is expected, near 'THEN'.
Run Code Online (Sandbox Code Playgroud)
我怎么能让这个工作?如果参数为"活动",则返回具有以下条件的记录?
你可以用另一种方式做到这一点:
SELECT *
FROM dbo.tblOrders o
WHERE o.OrderId IN (SELECT [Value] FROM [dbo].[udf_GenerateVarcharTableFromStringList](@OrderId, ','))
AND ((@ActiveInactive = 'Active' AND o.[orderactivedate] > o.[orderinactivedate])
OR (@ActiveInactive = 'Inactive' AND o.[orderactivedate] < o.[orderinactivedate]))
Run Code Online (Sandbox Code Playgroud)