sql - 如何根据重复值在sql中使用row Num()
问题描述
在 Sql 中,我有基于 Ite 和 Rev 的以下数据,它计算行数
Folder FileName VersionId DocumentID DocumentVersion Rev Ite Duplicate
\\abc\\ abc.sldprt V1 D00001 1 A 1 1
\\abc\\ abc.sldprt V12 D00001 12 A 1 2
\\abc\\ abc.sldprt V2 D00001 2 B 1 1
\\abc\\ abc.sldprt V3 D00001 3 B 2 2
\\abc\\ abc.sldprt V4 D00001 4 B 3 3
\\abc\\ abc.sldprt V5 D00001 5 C 1 1
\\abc\\ abc.sldprt V6 D00001 6 C 2 2
\\abc\\ abc.sldprt V7 D00001 7 C 3 3
\\abc\\ abc.sldprt V8 D00001 8 C 4 4
\\abc\\ abc.sldprt V9 D00001 9 D 1 1
\\abc\\ abc.sldprt V10 D00001 10 D 2 2
\\abc\\ abc.sldprt V11 D00001 11 E 1 1
我使用下面的查询来生成这个表。
select * ,
ROW_NUMBER() OVER (PARTITION BY Folder, DocumentID, Rev order by Rev, Ite) As "Duplicate"
from Versions v1;
有什么方法可以计算,如果 Rev 和 Ite 相同,那么只增加行号让我们说 1、2、3,如果 Rev 和 Ite 是唯一的,它只会分配 1,所以我得到基于 Rev 和 Ite 的重复计数。
所需的输出看起来像
Folder FileName VersionId DocumentID DocumentVersion Rev Ite Duplicate
\\abc\\ abc.sldprt V1 D00001 1 A 1 1
\\abc\\ abc.sldprt V12 D00001 12 A 1 2
\\abc\\ abc.sldprt V2 D00001 2 B 1 1
\\abc\\ abc.sldprt V3 D00001 3 B 2 1
\\abc\\ abc.sldprt V4 D00001 4 B 3 1
\\abc\\ abc.sldprt V5 D00001 5 C 1 1
\\abc\\ abc.sldprt V6 D00001 6 C 2 1
\\abc\\ abc.sldprt V7 D00001 7 C 3 1
\\abc\\ abc.sldprt V8 D00001 8 C 4 1
\\abc\\ abc.sldprt V9 D00001 9 D 1 1
\\abc\\ abc.sldprt V10 D00001 10 D 2 1
\\abc\\ abc.sldprt V11 D00001 11 E 1 1
所以这里 A 1 重复 2 次
请帮助或任何建议。
解决方案
我想你想要:
select v.* ,
row_number() over (partition by Folder, DocumentID, Rev, Ite
order by versionId
) As Duplicate
from Versions v;
推荐阅读
- python-3.x - 如何在python中使用套接字发送响应代码301?
- html - 将子元素设置为父元素的 100% 宽度
- wso2 - 无法检索应用程序并且无法为 API 创建订阅
- python - 图像直方图:IndexError:索引 4 超出轴 1 的范围,大小为 4
- angular - 如何动态添加到 ionic 应用程序的 CDN 链接
- azure - Tomcat 的 Azure SSO 配置
- c# - 为什么当我在 Elapsed 函数中更改间隔时 C# Timer 会重新启动
- r - 显示单个变量的 ggplot 方面
- java - 使用 Comparator 根据另一个数组(不同长度)对数组进行排序,结果顺序错误
- json-server - json-server --watch db.json in error TypeError: lodash.runInContext is not a function