SQL-连接十进制范围

约翰尼·杰特

我正在使用Microsoft SQL Server,并且具有以下表格:

dbo.student

+-----------+------------+
| StudentID | Percentage |
+-----------+------------+
| 100       | 0.75       |
| 101       | 0.82       |
| 102       | 0.95       |
| 103       | 0.59       |
+-----------+------------+

dbo.GradeMaster

+---------+-------+-----------------------+--------------------+
| GradeID | Grade | PercentageRangeBottom | PercentageRangeTop |
+---------+-------+-----------------------+--------------------+
| 1       | A     | 0.91                  | 1                  |
| 2       | B     | 0.81                  | 0.9                |
| 3       | C     | 0.71                  | 0.8                |
| 4       | D     | 0.61                  | 0.7                |
| 5       | F     | 0                     | 0.6                |
+---------+-------+-----------------------+--------------------+

我正在尝试生成一个报告,该报告将显示字母等级和学生证。我不想使用带有硬编码范围的巨型case语句,以防任何人决定更新范围dbo.GradeMaster(例如,A变成.85-1)。在这两个表上进行联接的最佳方法是什么?我考虑过还要创建一个计算字母等级的函数,但是我想不出最聪明的方法来解决这个问题。任何提示将不胜感激。这就是我希望报告看起来像的样子。

+-----------+-------+
| StudentID | Grade |
+-----------+-------+
| 100       | C     |
| 101       | B     |
| 102       | A     |
| 103       | F     |
+-----------+-------+
内维尔

像下面这样的东西应该可以解决问题:

SELECT Student.StudentId, GradeMaster.Grade 
FROM Student 
    INNER JOIN GradeMaster ON
        Student.Percentage BETWEEN GradeMaster.PercentageRangeBottom AND GradeMaster.PercentageRangeTop

您可以使用BETWEEN或类似的逻辑来执行联接,而不是直接进行场对场联接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Force显示十进制值

来自分类Dev

十进制到整数在SQL

来自分类Dev

SQL选择十进制不为0

来自分类Dev

CakePHP SQL十进制输入形式

来自分类Dev

在ORACLE SQL中用十进制减法

来自分类Dev

SQL:从varchar中提取十进制

来自分类Dev

从sql中提取十进制值

来自分类Dev

十进制列的SQL Sum函数返回int而不是十进制

来自分类Dev

SQL Server。如何考虑所有十进制数字的十进制小数

来自分类Dev

SQL将十进制(9,3)更改为十进制(9,2)

来自分类Dev

SQL Server。如何考虑所有十进制数字的十进制小数

来自分类Dev

SQL将求和与舍入十进制SQL2008

来自分类Dev

在SQL中将十进制数转换为货币(Oracle)

来自分类Dev

SQL将前导零的nvarchar转换为十进制

来自分类Dev

SQL大容量复制截断十进制

来自分类Dev

SQL-将数字转换为十进制

来自分类Dev

在十进制SQL Server 2012之后仅删除零

来自分类Dev

使用SQL查询删除十进制值

来自分类Dev

SQL Server ROUND基于十进制值

来自分类Dev

从SQL Server数据库读取十进制

来自分类Dev

将SQL十进制字段粘贴到EXCEL中

来自分类Dev

在SQL查询中返回十进制值

来自分类Dev

通过SQL类型转换获得的奇怪十进制值

来自分类Dev

通过SQL类型转换获得的奇怪十进制值

来自分类Dev

通过SQL类型转换获得的奇怪十进制值

来自分类Dev

在SQL Server中将结果更改为十进制

来自分类Dev

SQL大容量复制截断十进制

来自分类Dev

SQL-将数字转换为十进制

来自分类Dev

在Teradata / SQL中转换为十进制