我有一张表,在检查患者后由我们的提供者记录代码.代码看起来像A11,B99,C68,A12,O87,F76等.现在,我需要创建一个报告,将这些代码分组并计算在内.组应该看起来像A00-B99,C00-D48,D50-D89等.我已经研究过,发现我可能不得不使用REGEXP,我想尽量避免使用它.有人可以帮助什么是有效和优化的方式吗?
表:
ID Codes description
1 A11 Infection
2 A01 Intestinal infectIoUs diseases
3 H77 Intestinal infectIoUs diseases
5 D98 Intestinal infectIoUs diseases
6 D98 Intestinal infectIoUs diseases
7 A11 Intestinal infectIoUs diseases
8 A00 Intestinal infectIoUs diseases
9 A03 Intestinal infectIoUs diseases
10 D00 Intestinal infectIoUs diseases
11 D98 Intestinal infectIoUs diseases
...
...
...
...
期望的结果
code_group Count
A00-B99 10
C00-D48 50
D50-D89 100
...
...
...
我希望我解释了这个问题.
谢谢你的帮助!
解决方法:
您可以使用case语句进行聚合:
select (case when code between 'A00' and 'A99' then 'A00-A99'
when code between 'B00' and 'C48' then 'B00-C48'
when code between 'C49' and 'D99' then 'C49-D99'
. . .
end) as codeGroup,
count(*)
from t
group by codeGroup
order by codeGroup;