t-sql强制选择结果具有主键

r3i60tvu  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(375)

我有一大组不完美的数据,从这些数据我逆向工程表的编码使用。
对于这个特定的任务,我们知道所有具有特定分区代码的记录都应该具有来自另一个源的相同组id和计划id(数据中不包括这些id)。我已经能够添加组id和计划id的接近但不完美(且不完整)的Map。现在我想向后工作并构建一个分区Map表。我把数据压缩成这样的格式:

Division Year   Group   Plan    Cnt
52       2019   30      101    9031
52       2020   30      101    9562
54       2019   60      602    3510
54       2020   60      602    3385
56       2019   76      904    1113
56       2020   76      905    1125
56       2020   76      001    6

division和year列应该来自主键。正如您所看到的56,2020不是唯一的,但是通过查看cnt列,很容易看到计数为6的记录是一个坏记录,应该删除它。
我需要的是一个方法,返回每个分区和年份对一次,其中组ID和计划ID的计数最大。
谢谢您

zysjyyx4

zysjyyx41#

我使用rank()函数和where子句找到了答案:

SELECT *
FROM (
SELECT Division, Year, Group, Plan_Cd
     , RANK() OVER (PARTITION BY Division, Year ORDER BY Cnt DESC ) AS 'rk'
FROM DivisionMap ) R
WHERE rk = 1

相关问题