Tsql T-SQL更新查询以三人一组的方式输入定期数据

Tsql T-SQL更新查询以三人一组的方式输入定期数据,tsql,sql-server-2012,Tsql,Sql Server 2012,我有一个数据表,在同一个表中复制两次,形成三组数据 它的ReferenceID是主键,我希望以某种方式将3个相同的ReferenceID分组,并将这三个值f2f NF2F Travel以任意顺序注入到名为Type的行中,但确保每个ReferenceID只有一个值 例如: ReferenceID | Type ------------|------- 1 f2f 1 nf2f 1 Travel 2

我有一个数据表,在同一个表中复制两次,形成三组数据

它的ReferenceID是主键,我希望以某种方式将3个相同的ReferenceID分组,并将这三个值f2f NF2F Travel以任意顺序注入到名为Type的行中,但确保每个ReferenceID只有一个值

例如:

ReferenceID | Type 
------------|-------

    1          f2f
    1          nf2f
    1          Travel
    2          f2f
    2          nf2f
    2          Travel
    3          f2f
    3          nf2f
    3          Travel

等等等等

有可能吗?

您可以使用一个行号来完成此操作,该行号由案例3中的组数进行修改:

declare @t table(RefType varchar(10));
insert into @t values ('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel'),('f2f'),('nf2f'),('Travel');

select (row_number() over (order by RefType) % 3) + 1 as ReferenceID
    ,RefType
from @t
order by ReferenceID
        ,RefType;
输出
谢谢,有没有办法一直插入,直到完成所有行。如果为了理解这个问题,每个月的行数可能会有所不同,我不能也仍然不明白。@microchef我不知道你的意思是什么?这将为整个数据集的每个值提供一个递增的数字。如果只想将其应用于新数据,请查找max ReferenceID,然后将其添加到此查询的结果中,以确保键值唯一。
+-------------+---------+
| ReferenceID | RefType |
+-------------+---------+
|           1 | f2f     |
|           1 | nf2f    |
|           1 | Travel  |
|           2 | f2f     |
|           2 | nf2f    |
|           2 | Travel  |
|           3 | f2f     |
|           3 | nf2f    |
|           3 | Travel  |
+-------------+---------+