tsql - T-SQL 更新查询以三个一组的形式输入重复数据
问题描述
我有一张数据表,它在同一张表中重复两次以制作三组。
它的“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
等等等等……
可能吗 ?
解决方案
您可以通过您拥有的组数来执行此操作row_number
(mod
在您的情况下为 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;
输出
+-------------+---------+
| ReferenceID | RefType |
+-------------+---------+
| 1 | f2f |
| 1 | nf2f |
| 1 | Travel |
| 2 | f2f |
| 2 | nf2f |
| 2 | Travel |
| 3 | f2f |
| 3 | nf2f |
| 3 | Travel |
+-------------+---------+
推荐阅读
- mysql - XAMPP ECONNREFUSED 用于 localhost:3306
- sql - TSQL Pivot or Estimate Model Replication
- pyspark - PIL 与 PySpark 中的 Base64 jpg 图像
- python - 如何在熊猫中找到特定值并将它们求和
- google-apps-script - How to Delete older rows on Form input data
- google-apps-script - Google 表格所有权
- android - ZXing IntentIntegrator always asks to install Barcode Scanner app
- regex - 在 Dart 中只获取带有正则表达式的货币符号
- javascript - res.json() 不是函数
- flutter-objectbox - Store.watch() events detail