SQL Server中如何按数量选择职位
我有两张桌子: 表1-学生:SQL Server中如何按数量选择职位,sql,sql-server,Sql,Sql Server,我有两张桌子: 表1-学生: +------+-------+ |Roll | Name | +------+-------+ | 1 | A | | 2 | B | | 3 | C | +------+-------+ +------+------+ | Roll | Mark | +------+------+ | 1 | 85 | | 3 | 95 | +------+------+ 表2-标记: +------+---
+------+-------+
|Roll | Name |
+------+-------+
| 1 | A |
| 2 | B |
| 3 | C |
+------+-------+
+------+------+
| Roll | Mark |
+------+------+
| 1 | 85 |
| 3 | 95 |
+------+------+
表2-标记:
+------+-------+
|Roll | Name |
+------+-------+
| 1 | A |
| 2 | B |
| 3 | C |
+------+-------+
+------+------+
| Roll | Mark |
+------+------+
| 1 | 85 |
| 3 | 95 |
+------+------+
输出需要:
+-------+------+-------+---------+
| Roll | Name | Mark |Position |
+-------+------+-------+---------+
| 1 | A | 85 | 2 |
| 2 | B | 0 | 3 |
| 3 | C | 95 | 1 |
+-------+------+-------+---------+
要获得输出,查询应该是什么?我认为应该使用
rank
函数,但不知道如何使用它…使用LEFT JOIN
连接两个表,然后使用rank()
查询
select *, Position = rank() over(
order by t.Mark desc
)
from(
select t1.Roll, t1.Name, coalesce(t2.Mark, 0) as Mark
from student t1
left join Mark t2
on t1.Roll = t2.Roll
)t
order by t.Name;
使用Left Join and Rank()函数
质疑
到目前为止,您编写了哪些代码?