【问题标题】:how to extend date by specific condition如何根据特定条件延长日期
【发布时间】:2018-06-28 20:44:41
【问题描述】:

查询以延长推荐更多租户的一个月的有效截止日期 两次以上

样本数据:

ref_id  referrer_id referrer_bonus_amount   referral_valid  valid_from  valid_till
263 5   2500    1   2015-07-05  2015-09-05
264 3   2500    1   2015-07-05  2015-09-05
265 5   1000    0   2015-12-13  2016-02-13
266 6   2500    0   2016-04-25  2016-06-24
267 10  1000    1   2015-07-01  2015-09-01
268 5   2500    1   2015-05-12  2015-07-12
269 10  2500    0   2015-08-05  2015-10-05

我想要的是增加已推荐两次以上的referrer_id 的valid_till 日期。为了得到谁已经推荐了 2 次以上,我使用了这个代码:

> select referrer_id
>         from Referrals group by referrer_id having count(referrer_id)>2

但是如何在 valid_till 列中为 referrer_id >2 添加一个月。我相信要使用 dateadd,但我不知道如何使用。

【问题讨论】:

    标签: sql sql-server group-by having dateadd


    【解决方案1】:
    UPDATE [YourTable]
        SET [valid_till] = DATEADD(MONTH, 1, [valid_till])
    WHERE [ref_id] IN (
        SELECT [ref_id]
        FROM [YourTable]
        GROUP BY [ref_id]
        HAVING COUNT([ref_id]) > 1
        )
    

    【讨论】:

      【解决方案2】:

      试试这个

      > UPDATE TableName
        set valid_till = DateAdd(month,1,valid_from)AS valid_till
        where referrer_id in (select referrer_id
              from Referrals group by referrer_id having count(referrer_id)>2)
      

      在这种情况下,我假设 valid_from 是您想要添加一个月的日期,因为您没有指定

      【讨论】:

      • 谢谢。我想从 valid_till 扩展。感谢您的解决方案有效。 :)
      【解决方案3】:

      我想你正在寻找这种方法:

      SELECT
          ref_id
      ,   referrer_id
      ,   referrer_bonus_amount
      ,   referral_valid
      ,   valid_from
      ,   DATEADD(MONTH, 1, valid_till) AS valid_till
      FROM (
      SELECT 
          ref_id
      ,   referrer_id
      ,   referrer_bonus_amount
      ,   referral_valid
      ,   valid_from
      ,   valid_till
      ,   ROW_NUMBER() OVER(PARTITION BY referrer_id ORDER BY referrer_id) AS RN
      FROM @test
      ) D
      WHERE 
          RN > 2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-19
        • 2020-06-04
        • 2020-01-02
        • 2022-11-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多