根据 SQL 服务器中另一个列值的条件返回更新的列值
Returning an updated column value based on the conditions of another column value in SQL Server
我有一个 table Referrals
包含这些列:
ref_id
referrer_id(same as profile id)
referrer_bonus_amount
referral_valid
valid_from
valid_till
.
我需要编写代码来为推荐了两次以上的租户延长一个月的 valid_till
日期。引用的数量可以通过 referrer_id
列中特定数字 (profile_id
) 的出现次数来计算(与配置文件 ID 相同)。下面两段代码正在单独完成它们的工作,但我不知道如何加入它们以获得所需的结果。
select DATEADD(mm, 1, valid_till)
from Referrals
select
[referrer_id(same as profile id)],
count([referrer_id(same as profile id)])
from referrals
group by [referrer_id(same as profile id)]
having count([referrer_id(same as profile id)]) > 2
您可以使用 in
运算符:
SELECT DATEADD(MM, 1, valid_till)
FROM referrals
WHERE referrer_id IN (SELECT referrer_id
FROM referrals
GROUP BY referrer_id
HAVING COUNT(*) > 2)
或者如果您确实需要更新 table 而不仅仅是查询添加的月份,您可以在 update
语句中使用相同的想法:
UPDATE referrals
SET valid_till = DATEADD(MM, 1, valid_till)
WHERE referrer_id IN (SELECT referrer_id
FROM referrals
GROUP BY referrer_id
HAVING COUNT(*) > 2)
我想你可以使用 join
来做到这一点。但是,我不确定 table:
之间匹配的确切条件是什么
select DATEADD(month, 1, valid_till)
from Referrals r join
(select [referrer_id(same as profile id)], count([referrer_id(same as profile id)])
from referrals
group by [referrer_id(same as profile id)]
having count([referrer_id(same as profile id)]) > 2
) rr
on rr.ref_id = [referrer_id(same as profile id)];
我有一个 table Referrals
包含这些列:
ref_id
referrer_id(same as profile id)
referrer_bonus_amount
referral_valid
valid_from
valid_till
.
我需要编写代码来为推荐了两次以上的租户延长一个月的 valid_till
日期。引用的数量可以通过 referrer_id
列中特定数字 (profile_id
) 的出现次数来计算(与配置文件 ID 相同)。下面两段代码正在单独完成它们的工作,但我不知道如何加入它们以获得所需的结果。
select DATEADD(mm, 1, valid_till)
from Referrals
select
[referrer_id(same as profile id)],
count([referrer_id(same as profile id)])
from referrals
group by [referrer_id(same as profile id)]
having count([referrer_id(same as profile id)]) > 2
您可以使用 in
运算符:
SELECT DATEADD(MM, 1, valid_till)
FROM referrals
WHERE referrer_id IN (SELECT referrer_id
FROM referrals
GROUP BY referrer_id
HAVING COUNT(*) > 2)
或者如果您确实需要更新 table 而不仅仅是查询添加的月份,您可以在 update
语句中使用相同的想法:
UPDATE referrals
SET valid_till = DATEADD(MM, 1, valid_till)
WHERE referrer_id IN (SELECT referrer_id
FROM referrals
GROUP BY referrer_id
HAVING COUNT(*) > 2)
我想你可以使用 join
来做到这一点。但是,我不确定 table:
select DATEADD(month, 1, valid_till)
from Referrals r join
(select [referrer_id(same as profile id)], count([referrer_id(same as profile id)])
from referrals
group by [referrer_id(same as profile id)]
having count([referrer_id(same as profile id)]) > 2
) rr
on rr.ref_id = [referrer_id(same as profile id)];