SQL Query用于避免特定列术语的任何重复

Yas*_*G99 0 sql sql-server-2008

我希望设计一个查询,其中我需要列中的DISTINCT术语而不重复.我正在使用SQL Server 2008 R2版.

这是我的示例表:

id  bank_code   bank_name   interest_rate
----------------------------------------------------------
1   123         abc         3.5
2   456         xyz         3.7
3   123         abc         3.4
4   789         pqr         3.3
5   123         abc         3.6
6   456         xyz         3.1
Run Code Online (Sandbox Code Playgroud)

我想要的是,对'interest_rates'列下降的表进行排序,但不重复'bank_code'中的术语.

这就是我想要的:

id  bank_code   bank_name   interest_rate
----------------------------------------------------------
2   456         xyz         3.7 
5   123         abc         3.6
4   789         pqr         3.3
Run Code Online (Sandbox Code Playgroud)

我一直在尝试DISTINCT运算符,但它选择了所有列的唯一组合,而不是单个列的重复.这就是我正在做的事情,显然不会让我得到我想要的东西:

SELECT DISTINCT TOP 5 [ID], [BANK_CODE]
      ,[BANK_NAME]
      ,[INTEREST_RATE]
  FROM [SAMPLE]
  ORDER BY [INTEREST_RATE] DESC
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?任何帮助表示赞赏.

Aar*_*and 5

;WITH x AS 
(
    SELECT id,bank_code,bank_name,interest_rate,
      rn = ROW_NUMBER() OVER (PARTITION BY bank_code ORDER BY interest_rate DESC)
    FROM dbo.[SAMPLE]
)
SELECT id,bank_code,bank_name,interest_rate
FROM x WHERE rn = 1
ORDER BY interest_rate DESC;
Run Code Online (Sandbox Code Playgroud)