处方主表AdbotmPrescriptionHdr和处方明细表BdbovwtmPrescription并表查询处方号2303001442会得到多条处方明细可能包含有以下编号的染料R22XR23XR30XR35XR47XR44X等等现要求通过处方明细自动判断处方类型?判断标准:某个处方明细中只带有R1XX和R3XX染料的为单染棉某个处方明细中同时有R2XX和R3XX染料的为单染涤某个处方明细中同时有
可以使用CASE语句来实现根据染料类型判断处方类型的逻辑。以下是一种可能的SQL Server语句实现方式:
SELECT A.PrescriptionNo,
CASE
WHEN EXISTS (SELECT 1 FROM B WHERE PrescriptionNo = A.PrescriptionNo AND DyeCode LIKE 'R1%' AND DyeCode NOT LIKE 'R3%') THEN '单染棉'
WHEN EXISTS (SELECT 1 FROM B WHERE PrescriptionNo = A.PrescriptionNo AND DyeCode LIKE 'R2%' AND DyeCode NOT LIKE 'R3%') THEN '单染涤'
WHEN EXISTS (SELECT 1 FROM B WHERE PrescriptionNo = A.PrescriptionNo AND DyeCode LIKE 'R2%' AND DyeCode LIKE 'R3%') THEN '单染涤A'
WHEN EXISTS (SELECT 1 FROM B WHERE PrescriptionNo = A.PrescriptionNo AND DyeCode LIKE 'R1%' AND DyeCode LIKE 'R2%' AND DyeCode LIKE 'R3%') THEN '双染'
WHEN EXISTS (SELECT 1 FROM B WHERE PrescriptionNo = A.PrescriptionNo AND DyeCode LIKE 'R2%' AND DyeCode LIKE 'R4%' AND DyeCode LIKE 'R3%') THEN '直染'
WHEN EXISTS (SELECT 1 FROM B WHERE PrescriptionNo = A.PrescriptionNo AND DyeCode NOT LIKE 'R3%') THEN '本白'
ELSE '特殊'
END AS PrescriptionType
FROM dbo.tmPrescriptionHdr AS A
WHERE A.PrescriptionNo = '2303001442'
上述SQL语句通过嵌套的子查询来判断处方明细中的染料类型,并使用CASE语句将其映射为对应的处方类型。根据处方号进行过滤,可以得到指定处方号的处方类型
原文地址: http://www.cveoy.top/t/topic/iJV3 著作权归作者所有。请勿转载和采集!