SQL将列值解码为另一列
我正在使用PL/SQL 12。SQL将列值解码为另一列,sql,Sql,我正在使用PL/SQL 12。 我想解码一个列值以匹配另一个列值。我取列SP_-RANK和MOODY_-RANK中的最高值,并称之为RANK。我希望此列而不是值在SP或MOODYS中具有相应的值,具体取决于哪个值最高 下面是我的代码和一段数据 SELECT rv.updat , rv.instrumentid , greatest(nvl(rv.sp_rank, '-1') , nvl(rv.moody_rank, '-1')) AS "Rank" , rv.sp , rv.
我想解码一个列值以匹配另一个列值。我取列
SP_-RANK
和MOODY_-RANK
中的最高值,并称之为RANK
。我希望此列而不是值在SP
或MOODYS
中具有相应的值,具体取决于哪个值最高
下面是我的代码和一段数据
SELECT rv.updat
, rv.instrumentid
, greatest(nvl(rv.sp_rank, '-1')
, nvl(rv.moody_rank, '-1')) AS "Rank"
, rv.sp
, rv.moodys
, rv.SP_Rank
, rv.Moody_Rank
FROM ci.ratings_view rv
ORDER BY rv.updat ASC
表:
INSTRUMENTID | UPDAT | Rank | SP | MOODYS | SP_RANK | MOODY_RANK
-------------+------------+------+-----+--------+---------+-----------
0203041 | 26/09/2019 | 100 | AAA | Aaa | 100 | 100
0203378 | 26/09/2019 | 100 | AAA | Aaa | 100 | 100
0203734 | 26/09/2019 | 100 | AAA | Aaa | 100 | 100
0204196 | 26/09/2019 | 100 | AAA | Aaa | 100 | 100
0204277 | 26/09/2019 | 100 | AAA | Aaa | 100 | 100
0413194 | 26/09/2019 | 75 | A | NR | 75 | -1
0413216 | 26/09/2019 | 75 | A | NR | 75 | -1
0413240 | 26/09/2019 | 75 | A | NR | 75 | -1
0460583 | 26/09/2019 | 100 | AAA | NR | 100 | -1
0460656 | 26/09/2019 | 100 | AAA | NR | 100 | -1
0471534A | 26/09/2019 | 100 | AAA | WR | 100 | -1
0491438 | 26/09/2019 | -1 | NR | NR | -1 | -1
因此,与其说是
100
,不如说是AAA
,而不是75
A
,等等。你可以用CASE
语句来实现这一点:
选择
rv.update,
rv.instrumentid,
最大(nvl(rv.sp_排名,'-1'),
nvl(rv.moody_rank,'-1')作为“rank”,
rv.sp,
穆迪房车,
rv.SP_等级,
rv.U级,
案例
当合并(rv.moody_秩-1)>合并(rv.SP_秩-1)时,则为rv.moody
ELSE rv.SP
以纽兰克结束
从ci.U视图rv
按rv.updat asc订购
您可能需要添加一些额外的逻辑来处理关系,即使用哪个等级(SP或Moodys)您能告诉我们您的预期结果吗?谢谢