一尘不染

具有多个条件的 SQL Where 条件

sql

我有一个如下的 SQL 查询:我的要求是如果 Development env 是 DEV,那么 where 子句中的条件应该是 Date<Getdate-500 否则条件应该是 Date<Getdate-100。在这两种情况下,所有其他条件都相同。我们应该怎么做。谢谢

INSERT INTO @TableA (ID) 
    SELECT DISTINCT(ID)
    FROM EMP
    WHERE (Act_flag = 1 AND Date < GETDATE() - 100) OR Act_flag = 0

阅读 171

收藏
2021-05-30

共1个答案

一尘不染

您可以创建一个单独的表,比如 ENVIRONMENT 表,来存储它是什么环境。

在 DEV 中,表格将如下所示 -

Key Value
EnvName DEV

在 PROD 中,表格将如下所示 -

Key Value
EnvName PROD

然后,您可以读取此表并将键 ‘EnvName’ 的值存储在一个局部变量中,例如 envName,并使用它,如下所示 -

INSERT INTO @TableA (ID) 
    SELECT DISTINCT ID
    FROM EMP
    WHERE 
((EnvName = 'DEV' AND ((Act_flag = 1 AND Date < GETDATE() - 500) OR Act_flag = 0)) OR 
(EnvName <> 'DEV' AND ((Act_flag = 1 AND Date < GETDATE() - 100) OR Act_flag = 0)))
2021-05-30