Tsql 非数字数据的SQL WHERE条件中的情况

Tsql 非数字数据的SQL WHERE条件中的情况,tsql,conditional,case-when,Tsql,Conditional,Case When,我有这个查询,但我需要第二个条件,其中条件依赖于集合中的值: SELECT TABLE1.*, TABLE2.* FROM TABLE1, TABLE2 WHERE TABLE1.ID = TABLE2.ID AND TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE()) 所以我打算做一些这样的事情,但它不起作用(因为“>”): 我环顾四周,但我只能找到意图是操纵数字信息的例子。有人有什么想法吗?改变这一点: AND TABLE1.TIMESTAMP >

我有这个查询,但我需要第二个
条件,其中
条件依赖于集合中的值:

SELECT TABLE1.*, TABLE2.*
FROM TABLE1, TABLE2
WHERE TABLE1.ID = TABLE2.ID
AND TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE())
所以我打算做一些这样的事情,但它不起作用(因为“>”):

我环顾四周,但我只能找到意图是操纵数字信息的例子。有人有什么想法吗?

改变这一点:

AND TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE())
致:

AND(TABLE1.TRIGGER'TRUE'或(TABLE1.TRIGGER='TRUE'和TABLE1.TIMESTAMP>DATEADD(D,-5,GETDATE())
如果
TABLE1.TRIGGER
不等于
true
,则为“and true”;如果等于
true
,则将执行额外的条件检查(
TABLE1.TIMESTAMP>…
)。更改此项:

AND TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE())
致:

AND(TABLE1.TRIGGER'TRUE'或(TABLE1.TRIGGER='TRUE'和TABLE1.TIMESTAMP>DATEADD(D,-5,GETDATE())

如果
TABLE1.TRIGGER
不等于
true
,它将是“and true”,或者如果它等于
true

CASE
结果,它将执行额外的条件检查(
TABLE1.TIMESTAMP>…
),因此您需要对其进行处理,例如,将其与另一个值进行比较:

SELECT TABLE1.*, TABLE2.* 
  FROM TABLE1, TABLE2 
  WHERE TABLE1.ID = TABLE2.ID AND
    CASE
      WHEN TABLE1.TRIGGER = 'TRUE' THEN 1
      WHEN TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE()) THEN 1
      ELSE 0
      END = 1

CASE
生成一个值,因此您需要对其进行处理,例如,将其与另一个值进行比较:

SELECT TABLE1.*, TABLE2.* 
  FROM TABLE1, TABLE2 
  WHERE TABLE1.ID = TABLE2.ID AND
    CASE
      WHEN TABLE1.TRIGGER = 'TRUE' THEN 1
      WHEN TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE()) THEN 1
      ELSE 0
      END = 1