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)
有没有办法实现这个目标?任何帮助表示赞赏.
;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)