【发布时间】:2018-01-12 08:02:41
【问题描述】:
我正在寻找一种方法,我需要根据数据动态更改 WHERE 子句的条件。
请找到我的场景的模拟数据。
-----------------------------------
ConditionID ConditionName
-----------------------------------
1 N/A
2 Over
3 Under
--------------------------------------------------------------
ID Amount ThresholdAmount ConditionID
--------------------------------------------------------------
1 90 100 3
2 190 100 2
3 90 100 2
4 190 100 3
5 90 100 1
我需要根据 [ConditionID] 将 [Amount] 与 [ThresholdAmount] 进行比较。例如,如果条件为“超过”,则 [Amount] 应超过 [ThresholdAmount],如果不满足,则应过滤掉记录。
注意:我只是在寻找比我更好的方法。
我的方法:
WHERE
1 = CASE
WHEN ConditionName = 'OVER' THEN
CASE WHEN ([Amount] >= [ThresholdAmount]) THEN 1 ELSE 0 END
WHEN ConditionName = 'UNDER' THEN
CASE WHEN ([Amount] <= [ThresholdAmount]) THEN 1 ELSE 0 END
WHEN ConditionName = 'N/A' THEN
1
END
谢谢, 普拉卡兹
【问题讨论】:
-
编辑您的问题并显示您的“答案”。如果他们只是要完成您已经完成的工作,为什么还要费心去提供帮助。
-
@GordonLinoff 当然。
标签: sql sql-server dynamic where-clause