Select 根据同一 table 上的两个不同字段记录可变次数

Select a record a variable number of times based on two different fields on the same table

我不是 ANSI 专家SQL,我需要编写以下查询。

这是我开始的table:

ID Max_Recurrency Priority
abc 2 1
abc 2 450
abc 2 12
def 1 827
def 1 44
def 1 112
ghi 2 544
ghi 2 4
ghi 2 95
ghi 2 25

我需要的输出是这样的:

ID Max_Recurrency Priority
abc 2 450
abc 2 12
def 1 827
ghi 2 544
ghi 2 95

换句话说,我需要 select 记录 ID 的次数与 Max_Recurrency 字段中指示的一样多,并且 select 具有最高优先级的记录,即如果 Max_Recurrency 字段的值小于 ID 在 table.

中重复的次数,则排除优先级最低的那些

谁能帮帮我?

我们可以在这里使用ROW_NUMBER

WITH cte AS (
    SELECT t.*, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Priority DESC) rn
    FROM yourTable t
)

SELECT ID, Max_Recurrency, Priority
FROM cte
WHERE rn <= Max_Recurrency;