在院病人血型统计

完整语句如下

select

COUNT(case when tt like 'O型阳性%' then '1' end) as  'O+',

COUNT(case when tt like 'A型阳性%' then '1' end) as  'A+',

COUNT(case when tt like 'AB型阳性%' then '1' end) as  'AB+',

COUNT(case when tt like 'B型阳性%' then '1' end) as  'B+',

COUNT(case when tt like 'O型阴性%' then '1' end) as  'O-',

COUNT(case when tt like 'A型阴性%' then '1' end) as  'A-',

COUNT( case when tt like 'AB型阴性%' then '1' end) as  'AB-',

COUNT(case when tt like 'B型阴性%' then '1' end) as  'B-'

from (

        select distinct

                        a.PatientInId ,

                        LOGDATES as tt from(

                                            select Distinct 

                                                            病历号 as PatientInId ,

                                                            报告项目打印代码 as ICODE ,

                                                            检验结果 as StrValue from [172.31.100.26].[rmlis6].[dbo].[接口视图_检验报告结果]

                                                                                where (报告项目名称 like 'ABO%' or 报告项目名称 like 'RH%')

                                                                                    AND [检验结果] NOT LIKE '%?'

                                                                                    AND [病历号] in (

                                                  select patientinid from [BLOOD2019].[dbo].[BLOOD_SYNC_PATIENT]

                                                                                                    )

                                            ) a

                                      left join (

                                                  select Distinct 

                                                                    d.病历号 as PatientInId ,

                                                                    LOGDATES=(

                                                                              SELECT

                                                                                    ''+检验结果

                                                                                FROM [172.31.100.26].[rmlis6].[dbo].[接口视图_检验报告结果]

                                                                                    WHERE [病历号]=d.[病历号]

                                                                                        and  (报告项目名称 like 'ABO%' or 报告项目名称 like 'RH%')

                                                                                        AND [检验结果] NOT LIKE '%?' 

                                                                                            FOR XML PATH('')

                                                                                )

                                                      from [172.31.100.26].[rmlis6].[dbo].[接口视图_检验报告结果] d

                                                        where (报告项目名称 like 'ABO%' or 报告项目名称 like 'RH%')

                                                            AND [检验结果] NOT LIKE '%?'

                                                            AND [病历号] in (

                                                                      select patientinid from [BLOOD2019].[dbo].[BLOOD_SYNC_PATIENT]

                                                                              )

                                                  ) b 

                                              on a.PatientInId=b.PatientInId 

      )aa

表结构如下“

检验表                                                    |  病人表 

id   病人id   检验代号   检验结果             | 病人id

 1    2020       ABO        A 型                   | 2020 

2    2020      RH          阴性                     | 2021

3   2020       BGZKT    阳性                     |2022

要实现  血型为 A型 阳性的  的有多少个  且在院的 

第一步 先查询出所有人的所有检验项    并进行拼接 检验结果 

select Distinct d.病历号 as PatientInId ,LOGDATES=(SELECT ''+检验结果 FROM [172.31.100.26].[rmlis6].[dbo].[接口视图_检验报告结果]

Distinct  去重是 因为 这个人有几个检验项就会重复几次 造成无效数据  所以 去重

WHERE [病历号]=d.[病历号]and (报告项目名称 like 'ABO%' or 报告项目名称 like 'RH%') AND [检验结果] NOT LIKE '%?'

加上 血型条件   只要abo  rh 

FOR XML PATH('')

加上这个函数  生成数据为     ---A型阴性---   

然后把以上代码合并查询出来结果为

pitientinid      LOGDATES

2020               A型阴性 

第二步  关联 在院病人 使用跨库查询 

AND [病历号] in (select patientinid from [BLOOD2019].[dbo].[BLOOD_SYNC_PATIENT])) b

第三步 使用 case 做计数 查询每个血型的数量

(这里 注意 下面的‘1’ ‘’里面可以是任何东西   count只是做个计数)

                              COUNT(case when tt like 'O型阳性%' then '1' end) as 'O+',

                             COUNT(case when tt like 'A型阳性%' then '1' end) as  'A+',

                              COUNT(case when tt like 'AB型阳性%' then '1' end) as  'AB+',

                             COUNT(case when tt like 'B型阳性%' then '1' end) as  'B+',

                               COUNT(case when tt like 'O型阴性%' then '1' end) as  'O-',

                                 COUNT(case when tt like 'A型阴性%' then '1' end) as  'A-',

                                    COUNT( case when tt like 'AB型阴性%' then '1' end) as  'AB-',

                                   COUNT(case when tt like 'B型阴性%' then '1' end) as  'B-'

重要的就是上面这些 

查询结果为 :

A+    B+   AB+  O+     A-    B-   AB-  O-

2       0      0       0       0       0     0     0

至此 满足echarts 统计图的 数据要求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值