0

私は、ユーザーが自分のビジネスのためのサービスを作成できるようにする簡単なフォームを持っています。また、同じフォームを使用してそのサービスに取引を添付することもできます。

例:

  • サービスタイトル
  • サービス価格
  • サービスの説明
  • ディールを有効にする
  • 取引価格

非表示になっている2つの日付フィールドは次のとおりです。

  1. ServiceCreated_Date
  2. DealCreated_Date

私の質問は、これはフォームが「挿入」であり、更新されていないため、DealCreated_Dateに条件を組み込むための適切な方法は何でしょうか。

例えば:

INSERT INTO MyTable
(
    ServiceTitle
   ,ServicePrice
   ,ServiceDescription
   ,ServiceCreated_Date
   ,ActivateDeal
   ,DealPrice
   ,DealCreated_Date
) VALUES
(
    @ServiceTitle
   ,@ServicePrice
   ,@ServiceDescription
   ,GETDATE() // For ServiceCreated_Date
   ,@ActivateDeal
   ,@DealPrice
   ,???????

したがって、基本的に、DealCreated_DateフィールドにGETDATE()を使用したいのですが、ActivateDealがTRUEの場合のみです(1)

これを行う簡単な方法はありますか?

ご協力ありがとうございました。

4

1 に答える 1

2

CASEステートメントを使用したいだけだと思います。

INSERT INTO MyTable
(
    ServiceTitle
   ,ServicePrice
   ,ServiceDescription
   ,ServiceCreated_Date
   ,ActivateDeal
   ,DealPrice
   ,DealCreated_Date
) VALUES
(
    @ServiceTitle
   ,@ServicePrice
   ,@ServiceDescription
   ,GETDATE() // For ServiceCreated_Date
   ,@ActivateDeal
   ,@DealPrice
   ,CASE WHEN @ActivateDeal THEN getDate() END
)

これにより、@ ActivateDealの値に応じて、現在の日付またはNULLが挿入されます。データ型によっては、代わりにCASE WHEN @ActivateDeal=1を使用する必要がある場合があります。

SQLフィドルデモ

于 2013-02-24T23:45:30.957 に答える