sql - 将 DECODE 转换为映射/参考表
问题描述
我想确保将DECODE
函数转换为将其SELECT
连接到映射表的语句将正常运行,并且我没有使用在 SQL Server 中有效但在 Oracle SQL 中不同的编码或格式
关于代码:它正在使用该DECODE
功能将一系列四位数的医学分类代码映射为两位数的提供者专业代码。主表是PRVDR.TXNMY_CD
,结果将是一列PRFRM_PRVDR_SPCLTY_CD
。
原始代码:
SELECT
DECODE (SUBSTR(PRVDR.TXNMY_CD, 1, 4),
'261Q', '70','347E', '59','332H', '96','332B', 'A6','1711', 'Y9','2257', 'Y9','106H', '62','103K', '26','101Y', '26','367A', '42','207K', '03', '3416', '59','367H', '32','207L', '05','211D', '48','231H', '64','2376', '64','111N', '35','291U', '69','103G', '86','364S', '89','208C', '28', '172V', '60','251S'
) END AS PRFRM_PRVDR_SPCLTY_CD
FROM
NPS_CLM_HDR
我的转换尝试:
首先,我将单独创建这个名为 MAPPING 的表,其中包含以下列
| TXNMY_CD_MAP | PRFRM_PRVDR_SPCLTY_CD |
| 1711 | Y9 |
| 2257 | Y9 |
| 106H | 62 |
| 367A | 42 |
etc.
然后我会使用以下查询:
SELECT PRFRM_PRVDR_SPCLTY_CD
FROM REF.MAPPING AS M
JOIN PRVDR.TXNMY_CD AS P ON P.TXNMY_CD = M.TXNMY_CD_MAP
这看起来正确还是我使用了 SQL Server 中不适用于 Oracle SQL 的术语?
解决方案
嗯。. . 我期望这两列是:
TXNMY_CD4 PRFRM_PRVDR_SPCLTY_CD
'261Q' '70'
'347E' '59'
'332H' '96'
. . .
这可能是您的表格的样子,但这些是表格开头的值。
接着:
SELECT m.PRFRM_PRVDR_SPCLTY_CD
FROM PRVDR.TXNMY_CD P LEFT JOIN
REF.MAPPING M
ON LEFT(P.TXNMY_CD, 4) = M.TXNMY_CD_MAP
除了LEFT()
vs. SUBSTR()
,这应该适用于两个数据库。
请注意,这用于LEFT JOIN
确保即使没有匹配项也不会丢失任何行。
推荐阅读
- java - 战舰游戏的 2D 阵列中的船舶重叠问题,Java
- javascript - show/hide div using javascript
- ios - SSL Error occurs in URL Session data task call back in certain devices only
- javascript - Typescript check if promise body does not call `resolve`
- sql - SQL Query to calculate the hours between two dates grouped by days
- java - 通过 java.nio 使用 BOM 编写以 UTF-8 编码的文本文件
- ios - swift中在表格视图中选择字母部分的事件生成
- swift - 快速舍入 Double 值,并在小数点前加法
- scheme - 使用应用顺序,评估参数的顺序是什么?从左到右还是从右到左?
- angular - Ionic Data Storage