寻求一些帮助。我不知道该怎么做。
我有两个表,我需要从ICD10Code列获取数据到另一个ICD10Code列,但我需要加入的列ICD9Code有一些格式差异,其中数字存储为字符串,并且涉及尾随零和小数。
第一个表包含ReportsMeasure,ICD9Code和ICD10Code列。 ICD10Code为空。我需要从第二个表中填充ICD10Code。
第二个表有列ICD9Code和ICD10Code。现在问题。两列都是varchar(25),但是表1没有尾随零,有时整数有一个尾随的小数,有时不是。表2有尾随零和整数有小数和尾随零。
TableST TablePR
ICD9Code ICD9Code
296.2 296.20
311. OR 311 311.0
当匹配时,此代码可以正常工作,但不会显示示例。
UPDATE TableST
SET ICD10Code = t2.ICD10Code
FROM TableST t1
INNER JOIN TablePR t2 ON t1.ICD9Code = t2.ICD9Code
GO
如何在具有不规则ICD9Code的行上更新ICD10Code? p>
答案 0 :(得分:1)
假设代码始终是数字,您可以尝试加入十进制版本:
on cast(t1.ICD9Code as decimal(10, 3)) = cast(t2.ICD9Code as decimal(10, 3))
" 3"是小数位后的最大位数的任意值(在这种情况下似乎是合理的)。转换为小数是准确的。您不希望使用浮点表示。
在您的情况下可能有效的另一种解决方案是使用like
:
on t1.ICD9Code = t2.ICD9Code or
((t1.ICD9Code like '%.%' and t1.ICD9Code = t2.ICD9Code + '0') or
(t1.ICD9Code not like '%.%' and t1.ICD9Code = t2.ICD9Code + '.0')
)