代码之家  ›  专栏  ›  技术社区  ›  user1447679

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

  •  0
  • user1447679  · 技术社区  · 11 年前

    我有一个简单的表单,允许用户为他们的业务创建服务。他们也可以使用相同的形式将交易附加到该服务上。

    例子:

    • 服务名称
    • 服务价格
    • 服务说明
    • 激活交易
    • 交易价格

    有两个隐藏的日期字段:

    1. 服务创建日期
    2. 交易创建日期

    我的问题是,既然这是表单“插入”而不是更新,那么在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 回复  |  直到 11 年前
        1
  •  2
  •   sgeddes    11 年前

    我认为您只想使用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