SQL技术内幕-6 rank()over(order by XX COLLATE) 的用法

DECLARE @Names TABLE (
  name VARCHAR(20)
);

INSERT INTO @Names VALUES
  ('DeSzmetch'),('DESZMETCH'),('DESZMETCK'),('DesZmetch'),('deszmetch');

SELECT
  name,
  RANK() OVER (ORDER BY name COLLATE Latin1_General_BIN) AS [Lat...BIN],
  RANK() OVER (ORDER BY name COLLATE Traditional_Spanish_CI_AS) AS [Tra...CI_AS],
  RANK() OVER (ORDER BY name COLLATE Latin1_General_CS_AS) AS [Lat...CS_AS],
  RANK() OVER (ORDER BY name COLLATE Latin1_General_CI_AS) AS [Lat...CI_AS],
  RANK() OVER (ORDER BY name COLLATE Hungarian_CI_AS) AS [Hun..._CI_AS]
FROM @Names
ORDER BY name COLLATE Latin1_General_BIN;
GO

  ---order 不要后面的字段也可以不同,但是都会按照最后一个排列顺序

DECLARE @Student table   --学生成绩表
(
 id int,  --主键
 Grade int, --班级
 Score INT, --分数
 name VARCHAR(120)  --名字
)
INSERT INTO @Student VALUES
(1,1,88,'A1'),(2,1,66,'B1'),(3,1,75,'C1'),(4,2,30,'D1'),(5,2,70,'E1'),
( 6,2,80,'F1'),(7,2,60,'G1'),(8,3,90,'H1'),(9,3,70,'I1'),(10,3,80,'j1')

--SELECT * FROM  @Student

SELECT name,Score,
rank() OVER(ORDER BY Grade DESC) AS rankGrade,
rank() OVER(ORDER BY Score DESC) AS rankScore,
rank() OVER(ORDER BY id DESC) AS rankid
FROM  @Student

  

转载于:https://www.cnblogs.com/alphafly/p/4307245.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值