0

このクエリがありますがWHERE、セット内の値に依存する 2 番目の条件が必要です。

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がと等しくない場合は「and true」になり、が と等しい場合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 に答える