我的借款人表格中有以下案例陈述
SELECT borrower_id,
CASE
WHEN bo.fico_score >= 0 AND bo.fico_score <= 599 THEN '0-599'
WHEN bo.fico_score >= 600 AND bo.fico_score <= 649 THEN '600-649'
WHEN bo.fico_score >= 650 AND bo.fico_score <= 699 THEN '650-699'
WHEN bo.fico_score >= 700 AND bo.fico_score <= 749 THEN '700-749'
WHEN bo.fico_score >= 750 AND bo.fico_score <= 800 THEN '750-800'
WHEN bo.fico_score > 800 AND bo.fico_score <= 850 THEN '801-850'
END AS "Borrower FICO"
from borrowers bo;
用例要求我提供低范围和高范围而不是上述范围。以下代码有效。
SELECT borrower_id,
CASE
WHEN bo.fico_score >= 0 AND bo.fico_score <= 599 THEN '0'
WHEN bo.fico_score >= 600 AND bo.fico_score <= 649 THEN '600'
WHEN bo.fico_score >= 650 AND bo.fico_score <= 699 THEN '650'
WHEN bo.fico_score >= 700 AND bo.fico_score <= 749 THEN '700'
WHEN bo.fico_score >= 750 AND bo.fico_score <= 800 THEN '750'
WHEN bo.fico_score > 800 AND bo.fico_score <= 850 THEN '801'
END AS "Borrower FICO LOW",
CASE
WHEN bo.fico_score >= 0 AND bo.fico_score <= 599 THEN '599'
WHEN bo.fico_score >= 600 AND bo.fico_score <= 649 THEN '649'
WHEN bo.fico_score >= 650 AND bo.fico_score <= 699 THEN '699'
WHEN bo.fico_score >= 700 AND bo.fico_score <= 749 THEN '749'
WHEN bo.fico_score >= 750 AND bo.fico_score <= 800 THEN '800'
WHEN bo.fico_score > 800 AND bo.fico_score <= 850 THEN '850'
END AS "Borrower FICO HIGH",
from borrowers bo;
我认为这不是很好的设计。是否有更好的方法来编写此案例陈述,以便为借款人信用评分提供低和高范围?
答案 0 :(得分:1)
您可以使用原始查询并将结果字符串拆分为&#39; - &#39;,例如:
with borrowers(borrower_id, fico_score) as (
values
(1, 133),
(2, 633)
)
select
borrower_id,
split_part(fico, '-', 1) as "Borrower FICO Low",
split_part(fico, '-', 2) as "Borrower FICO High"
from (
select borrower_id,
case
when bo.fico_score >= 0 and bo.fico_score <= 599 then '0-599'
when bo.fico_score >= 600 and bo.fico_score <= 649 then '600-649'
when bo.fico_score >= 650 and bo.fico_score <= 699 then '650-699'
when bo.fico_score >= 700 and bo.fico_score <= 749 then '700-749'
when bo.fico_score >= 750 and bo.fico_score <= 800 then '750-800'
when bo.fico_score > 800 and bo.fico_score <= 850 then '801-850'
end as fico
from borrowers bo
) s;
borrower_id | Borrower FICO Low | Borrower FICO High
-------------+-------------------+--------------------
1 | 0 | 599
2 | 600 | 649
(2 rows)