0

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

SELECT TABLE1.*, TABLE2.*
FROM TABLE1, TABLE2
WHERE TABLE1.ID = TABLE2.ID
AND TABLE1.TIMESTAMP > DATEADD(D,-5,GETDATE())

所以我想要这样的东西不起作用(因为'>'):

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

我环顾四周,但只能找到意图操纵数字信息的示例。有没有人有任何想法?

4

2 回答 2

2

改变这个:

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

到:

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

TABLE1.TRIGGER如果不等于,这将是“和真” ,或者如果等于TRUE它将执行额外的条件检查 ( TABLE1.TIMESTAMP > ...) 。TRUE

于 2012-05-01T23:30:14.940 回答
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
于 2012-05-02T02:55:46.660 回答