sql - 连接到没有范围但需要范围的表

标签 sql oracle select oracle10g

尝试找到编写此 SQL 语句的最佳方法。

我有一个客户表,其中包含该客户的内部信用评分。然后我有另一个表,其中包含该信用评分的定义。我想将这些表连接在一起,但第二个表没有任何方法可以轻松链接它。

客户的评分是1-999之间的整数,定义表有以下几列:

Score
Description

这些行:

60   LOW
99   MED
999  HIGH

所以基本上,如果客户的分数在 1 到 60 之间,那么他们的分数就低,61-99 的分数就高,100-999 的分数就高。

我无法真正 INNER JOIN 这些,因为只有当分数为 60、99 或 999 时它才会加入它们,并且这会排除具有这些分数的其他任何人。

我不想用静态数字做一个案例陈述,因为我们的分数将来可能会改变,并且我不想在他们改变时更新我的​​初始查询。我也无法创建任何表或函数来执行此操作 - 我需要创建一个 SQL 语句来为我执行此操作。

编辑:

一位同事说这可行,但有点疯狂。我认为必须有更好的方法:

SELECT 
  internal_credit_score
  (
    SELECT
      credit_score_short_desc
    FROM
      cf_internal_credit_score
    WHERE
      internal_credit_score = (
                                SELECT 
                                  max(credit.internal_credit_score) 
                                FROM 
                                  cf_internal_credit_score credit  
                                WHERE 
                                  cs.internal_credit_score <= credit.internal_credit_score
                                  AND credit.internal_credit_score <= (
                                                                        SELECT
                                                                          min(credit2.internal_credit_score)
                                                                        FROM
                                                                          cf_internal_credit_score credit2
                                                                        WHERE
                                                                          cs.internal_credit_score <= credit2.internal_credit_score
                                                                      )
                              )
  )
FROM 
  customer_statements cs

最佳答案

尝试一下,更改表格以包含分数范围:

ScoreTable
-------------
LowScore int
HighScore int
ScoreDescription string

数据值

LowScore HighScore ScoreDescription 
-------- --------- ----------------
1        60        Low
61       99        Med
100      999       High

查询:

Select
    .... , Score.ScoreDescription 
    FROM YourTable
    INNER JOIN Score ON YourTable.Score>=Score.LowScore 
        AND YourTable.Score<=Score.HighScore
    WHERE ...

关于sql - 连接到没有范围但需要范围的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6931805/

相关文章:

java - Java 中有没有类似于 Go 的 Select 的关键字或方法?

mysql - SELECT DISTINCT 数据不同但未被过滤

php - Laravel 负载与模型条件的关系

mysql - 验证 MySQL 中的时间格式有效性

oracle - PL/SQL : Selecting from a table into an assoc array

甲骨文顶点 : Scale image to screen

javascript - 在按钮中使用 math.random 来设置选择选项?

php - mysql按特定顺序按多个值排序

sql - 即使更改查询后,Oracle 查询也会卡在同一位置

sql - 在 SQL 中,我想显示所有以元音结尾的城市的名称