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