SQLクエリに次のロジックを実装したい: 日付が設定されていないか、年が1970の場合は、real_date
フラグを選択して現在のデータに変更します。 real_date
はtrue
であり、日付を変更する必要はありません。 real_date
はテーブルの実際のフィールドではなく、設定が必要なフラグです。私は簡単に私のSELECT
セクションの2行を使用してこれを行うことができますIFステートメントで2つ以上の値を選択
:
, IF (actualDate is NULL OR YEAR(actualDate) = 1970, CURRENT_TIMESTAMP(), actualDate) as actual_date
, IF (actualDate is NULL OR YEAR(actualDate) = 1970, null, true) as real_date
質問 - それはそれを行うための唯一の方法ですが?本当に私は再び条件をコピーしなければならないという事実を好まない。何とか2番目の選択肢を最初のものに移動できますか?
更新:私は両方がactualDate
(真または偽/ nullになります)とreal_date
(それが現在の時刻バージョンまたは実際の格納された値に固定されるのいずれか)を選択する必要があります。たぶん私は何かを見逃しているかもしれませんが、COALESCEの機能がここでどう役立つのでしょうか?
更新2:ありがとうございました。それを書くための他の方法を学んだが、それらのすべては2か所で点検した。私の考えは論理的な条件を1つの場所に持つことでしたが、可能ではないようです。
* 'いくつかの日付が設定されたり、それが1970年には、その後選択された年ですされていない場合は 'を'actualDate'にNULL以外の日付集合が含まれている場合は、' NULL'を返します。 1970年以降。 –
あなたの道は上手く見える(ほとんど)。しかし、NULL FIRSTのテスト、実際の年... real_dateのフラグについては、私は明示的に...、true、false)をreal_dateとして返します – DRapp
ありがとう、アンドリー。編集されたコード(typoだった)。 DRapp、それはなぜですか? –