Sql server 如何在SQL Server中根据条件将日期中的月份增加1

Sql server 如何在SQL Server中根据条件将日期中的月份增加1,sql-server,Sql Server,我正在尝试将参考id超过两次的租户的有效期延长到一个月 refid, referrer_id, referrer_bonus_amount, referral_valid, valid_from, valid_till 1 2 2500 1 2015-07-05 2015-09-05 2 3 2500 1 2015-07-05 2015-09-05 3 5 1000 0 2015-12-13 2016-02-13 4 6 25

我正在尝试将参考id超过两次的租户的有效期延长到一个月

refid, referrer_id, referrer_bonus_amount, referral_valid, valid_from, valid_till

1   2   2500    1   2015-07-05  2015-09-05
2   3   2500    1   2015-07-05  2015-09-05
3   5   1000    0   2015-12-13  2016-02-13
4   6   2500    0   2016-04-25  2016-06-24
5   10  1000    1   2015-07-01  2015-09-01
6   12  2500    1   2015-05-12  2015-07-12
7   13  2500    0   2015-08-05  2015-10-05
8   20  1000    1   2016-02-05  2016-04-05
9   2   2500    0   2015-08-12  2015-09-12
10  5   91000   1   2016-02-18  2016-04-18
11  20  1500    1   2016-06-19  2016-08-19
12  9   2500    0   2015-11-15  2016-01-15
13  13  91000   1   2016-02-01  2016-04-01
14  5   1000    1   2016-04-25  2016-06-24

使用
exists()
有计数(*)2
更新
表(
t
),将
有效期增加1个月,直到
出现在
refirer\u id
中两次以上的
refid

update t
  set valid_till = dateadd(month,1,valid_till)
output inserted.*
from t
where exists (
  select 1
  from t as i
  where i.referrer_id = t.refid
  group by referrer_id
  having count(*) > 2
  )
rextester演示:

输出:

+-------+-------------+-----------------------+----------------+------------+------------+
| refid | referrer_id | referrer_bonus_amount | referral_valid | valid_from | valid_till |
+-------+-------------+-----------------------+----------------+------------+------------+
|     5 |          10 |                  1000 |              1 | 2015-07-01 | 2015-10-01 |
+-------+-------------+-----------------------+----------------+------------+------------+