|
原帖由 lfree 于 2008-6-6 10:06 发表 ![]()
SELECT DISTINCT "OPERATION_BILL_ITEMS"."PATIENT_ID",
"OPERATION_BILL_ITEMS"."OPER_ID", "PAT_MASTER_INDEX"."NAME",
"PAT_MASTER_INDEX"."SEX", "PAT_MASTER_INDEX"."CHARGE_TYPE"
FROM "PAT_MASTER_INDEX",
"OPERATION_BILL_ITEMS",
"SURGERY"."OPERATION_MASTER"
WHERE ("SURGERY"."OPERATION_MASTER"."PATIENT_ID" =
"OPERATION_BILL_ITEMS"."PATIENT_ID"
)
AND ("SURGERY"."OPERATION_MASTER"."VISIT_ID" =
"OPERATION_BILL_ITEMS"."VISIT_ID"
)
AND ("SURGERY"."OPERATION_MASTER"."OPER_ID" =
"OPERATION_BILL_ITEMS"."OPER_ID"
)
AND ("OPERATION_BILL_ITEMS"."PATIENT_ID" =
"PAT_MASTER_INDEX"."PATIENT_ID"
)
AND ( (TO_CHAR ("OPERATION_MASTER"."START_DATE_TIME",
'YYYY-MM-DD'
) = :operating_date
)
AND ("OPERATION_BILL_ITEMS"."PERFORMED_BY" = :performed_by)
)
再贴一个,现在看军惠的sql写的真烂!!!!
这个SQL看不太明白程序员的意图,是不是想查一下在某天手术室有哪些操作员收了哪些病人的费用?为什么偏要指定执行科室?难道是其他科室要查看手术室替自己记了些什么费用么?如果是这样的话,为什么不显示明细,而只显示病人及其身份?
如果不需要限定执行科室,可以优化为如下语句:
SELECT b.PATIENT_ID,
c.OPER_ID, b.NAME,
b.SEX, b.CHARGE_TYPE
FROM PAT_MASTER_INDEX b,
SURGERY.OPERATION_MASTER c
WHERE c.PATIENT_ID = b.PATIENT_ID
AND ((TO_CHAR (c.START_DATE_TIME,'YYYY-MM-DD') = :operating_date); |
|