我有此声明声明
declare @ReferralLevelData table([Type of Contact] varchar(10));
insert into @ReferralLevelData values ('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel');
select (row_number() over (order by [Type of Contact]) % 3) +1 as [Referral ID]
,[Type of Contact]
from @ReferralLevelData
order by [Referral ID]
,[Type of Contact];
它没有插入表中,所以我感觉这没有按预期工作,即它没有修改表。
如果它确实有效,我希望修改该语句以使其更新。
此刻表格仅显示此结果
1 f2f
1 nf2f
1 Travel
2 f2f
2 nf2f
2 Travel
3 f2f
3 nf2f
3 Travel
编辑: 我想更新表以三个为一组输入重复数据。
我有一个数据表,它在同一张表中重复两次以形成三组。
它的“ ReferenceID”是主键,我想以某种方式将3个相同的ReferenceID分组,并将这三个值“ f2f”“ NF2F”“ Travel”以任意顺序注入“ Type”行中,但要确保每个ReferenceID仅具有这些值之一。
答案 0 :(得分:2)
您是说以下意思吗?
declare @ReferralLevelData table(
[Referral ID] int,
[Type of Contact] varchar(10)
);
insert into @ReferralLevelData([Referral ID],[Type of Contact])
select
(row_number() over (order by [Type of Contact]) % 3) +1 as [Referral ID]
,[Type of Contact]
from
(
values ('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel')
) v([Type of Contact]);
如果适合的话,您还可以使用下一个查询生成数据:
select r.[Referral ID],ct.[Type of Contact]
from
(
values ('f2f'),('nf2f'),('Travel')
) ct([Type of Contact])
cross join
(
values (1),(2),(3)
) r([Referral ID]);