SELECT '门诊' as 病人来源,B.名称 药房,A.审核人 发药人,SUM(处方单数) 处方单数,SUM(处方明细数) 处方明细数,SUM(处方单金额) 处方单金额 ,
SUM(摆药单数) 摆药单数,SUM(摆药明细数) 摆药明细数,SUM(摆药单金额) 摆药单金额
FROM
(
SELECT B.库房ID,B.审核人,COUNT(DISTINCT B.NO) 处方单数,COUNT(B.ID) 处方明细数,SUM(A.单价*A.已发数量) 处方单金额,
0 摆药单数,0 摆药明细数,0 摆药单金额
FROM
--仅统计发了药的处方,因此,只要发了药(不管是全部发药还是部分发药),都要统计出来
(
SELECT A.NO,A.单据,A.序号,A.零售价 单价,MAX(A.记录状态) 记录状态,SUM(NVL(A.付数,1)*A.实际数量) 已发数量
From 药品收发记录 A
Where A.审核人 Is Not Null And A.库房ID+0 /*B2*/is not null/*E2*/ AND A.单据 IN (8)
And A.审核日期 Between /*B0*/TO_DATE('2023-12-08','YYYY-MM-DD')/*E0*/ And /*B1*/TO_DATE('2024-01-08','YYYY-MM-DD')/*E1*/+1-1/24/60/60
GROUP BY A.no,A.单据,A.药品ID,A.序号,A.零售价
HAVING SUM(NVL(A.付数,1)*A.实际数量)<>0
) A,药品收发记录 B
WHERE A.NO=B.NO AND A.单据=B.单据 AND A.序号=B.序号 AND A.记录状态=B.记录状态
GROUP BY B.库房ID,B.审核人
) A,部门表 B
WHERE A.库房ID=B.ID
GROUP BY B.名称,A.审核人
union all
SELECT '住院' as 病人来源,B.名称 药房,A.审核人 发药人,SUM(处方单数) 处方单数,SUM(处方明细数) 处方明细数,SUM(处方单金额) 处方单金额 ,
SUM(摆药单数) 摆药单数,SUM(摆药明细数) 摆药明细数,SUM(摆药单金额) 摆药单金额
FROM
(
SELECT B.库房ID,B.审核人,COUNT(DISTINCT B.NO) 处方单数,COUNT(B.ID) 处方明细数,SUM(A.单价*A.已发数量) 处方单金额,
0 摆药单数,0 摆药明细数,0 摆药单金额
FROM
--仅统计发了药的处方,因此,只要发了药(不管是全部发药还是部分发药),都要统计出来
(
SELECT A.NO,A.单据,A.序号,A.零售价 单价,MAX(A.记录状态) 记录状态,SUM(NVL(A.付数,1)*A.实际数量) 已发数量
From 药品收发记录 A
Where A.审核人 Is Not Null And A.库房ID+0 /*B2*/is not null/*E2*/ AND A.单据 IN (9,10)
And A.审核日期 Between /*B0*/TO_DATE('2023-12-08','YYYY-MM-DD')/*E0*/ And /*B1*/TO_DATE('2024-01-08','YYYY-MM-DD')/*E1*/+1-1/24/60/60
GROUP BY A.no,A.单据,A.药品ID,A.序号,A.零售价
HAVING SUM(NVL(A.付数,1)*A.实际数量)<>0
) A,药品收发记录 B
WHERE A.NO=B.NO AND A.单据=B.单据 AND A.序号=B.序号 AND A.记录状态=B.记录状态
GROUP BY B.库房ID,B.审核人
) A,部门表 B
WHERE A.库房ID=B.ID
GROUP BY B.名称,A.审核人