完整语句如下
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 统计图的 数据要求