SQL插入语句 - 如何在单个字段上指定条件

时间:2013-02-24 23:37:42

标签: sql sql-server-2008

我有一个简单的表单,允许用户为他们的业务创建服务。他们还可以使用相同的表格为该服务附加协议。

示例:

  • 服务标题
  • 服务价格
  • 服务说明
  • 激活交易
  • 交易价格

隐藏了两个日期字段:

  1. ServiceCreated_Date
  2. DealCreated_Date
  3. 我的问题是,因为这是形式是“插入”而不更新在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)

    有一种简单的方法吗?

    感谢您的帮助。

1 个答案:

答案 0 :(得分: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
)

这应该插入当前日期或NULL,具体取决于@ActivateDeal的值。根据其数据类型,您可能需要使用CASE WHEN @ActivateDeal = 1。

SQL Fiddle Demo