[英]How can I optimize following MySQL Query
I tried my level best to optimize the following query:我尽最大努力优化以下查询:
SELECT
prov,
role,
COUNT(*) AS visits,
charge_amt,
charge_amt * COUNT(*) AS AvgCharge,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu)),
2),
'')) AS WorkRVU,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu)),
2),
'')) / SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu) + COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu) + COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) AS AvgWorkRVU,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) AS MALRVU,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) / SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu) + COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu) + COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) AS AvgMalRVU,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu)),
2),
'')) AS PERVU,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu)),
2),
'')) / SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu) + COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu) + COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) AS AvgPervRVU,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu) + COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu) + COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) AS TotalRvu,
SUM(IFNULL(FORMAT(qty * (COALESCE(WithMod.work_rvu, WithoutMod.work_rvu) + COALESCE(WithMod.fac_pe_rvu,
WithoutMod.fac_pe_rvu) + COALESCE(WithMod.mp_rvu, WithoutMod.mp_rvu)),
2),
'')) / COUNT(*) AS AvgTotalRvu
FROM
(SELECT
CAST(`e`.`encounter_dos` AS DATE) AS `encounter_dos`,
`e`.`encounter_uid` AS `encounter_uid`,
`ed`.`work_item_uid` AS `work_item_uid`,
`e`.`encounter_ins_1` AS `encounter_ins_1`,
`ed`.`encounter_status` AS `encounter_status`,
MAX((((`pro`.`em_level` <> '0')
OR (`fac`.`em_level` <> '0'))
AND (`ed`.`encounter_status` = 'DE_COMPLETE'))) AS `Billed`,
MAX(((ISNULL(`pro`.`em_level`)
OR (`pro`.`em_level` = '0'))
AND (ISNULL(`fac`.`em_level`)
OR (`fac`.`em_level` = '0'))
AND (`ed`.`encounter_status` IN ('DE_COMPLETE' , 'DE_LWBS', 'LWBS')))) AS `NoCharge`
FROM
(((`tbl_encounter` `e`
JOIN `tbl_encounter_detail` `ed` ON ((`e`.`encounter_uid` = `ed`.`encounter_uid`)))
LEFT JOIN `tbl_event_em_pro` `pro` ON (((`pro`.`encounter_uid` = `e`.`encounter_uid`)
AND (`pro`.`work_item_uid` = `ed`.`work_item_uid`))))
LEFT JOIN `tbl_event_em_fac` `fac` ON (((`fac`.`encounter_uid` = `e`.`encounter_uid`)
AND (`fac`.`work_item_uid` = `ed`.`work_item_uid`))))
WHERE
(`ed`.`encounter_status` IN ('COMPLETE' , 'DE_COMPLETE', 'DE_HOLD', 'DE_IN_PROGRESS', 'DE_LWBS', 'DE_PRO_IN_PROGRESS', 'DE_PRO_READY', 'DE_TEC_IN_PROGRESS', 'DE_TEC_READY', 'IN_PROGRESS', 'IN_QA', 'LWBS', 'OPEN', 'REGISTERED', 'SUSPEND', 'TRANSFER', 'VISIT_COMPLETE', 'VISIT_IN_PROGRESS'))
GROUP BY `e`.`encounter_uid` , `ed`.`work_item_uid`) vw
JOIN
tbl_encounter USING (encounter_uid)
JOIN
tbl_work_item USING (work_item_uid)
JOIN
tbl_facility ON tbl_facility.facility_id = tbl_work_item.facility_id
JOIN
(SELECT
work_item_uid,
encounter_uid,
em_level AS cpt,
1 AS qty,
em_modifier1 AS mod1,
mid AS Prov,
'MLP PRIMARY' AS Role
FROM
tbl_event_em_pro
WHERE
em_level <> '0' AND mid <> ''
AND shared = 0 UNION ALL SELECT
work_item_uid,
encounter_uid,
em_level AS cpt,
1 AS qty,
em_modifier1 AS mod1,
em_provider,
'PHYSICIAN (NO SEC)'
FROM
tbl_event_em_pro
WHERE
em_level <> '0' AND mid <> ''
AND shared = 1 UNION ALL SELECT
work_item_uid,
encounter_uid,
em_level AS cpt,
1 AS qty,
em_modifier1 AS mod1,
em_provider,
'PHYSICIAN (NO SEC)'
FROM
tbl_event_em_pro
WHERE
em_level <> '0' AND mid = ''
AND shared = 0 UNION ALL SELECT
cpt.work_item_uid,
cpt.encounter_uid,
cpt.procedure_num,
GREATEST(1, cpt.procedure_qty),
cpt.procedure_modifier1,
em.em_provider,
'PHYSICIAN (NO SEC)'
FROM
tbl_event_cpt_pro cpt
JOIN tbl_event_em_pro em USING (encounter_uid)
WHERE
em.mid <> '' AND em.shared = 1 UNION ALL SELECT
cpt.work_item_uid,
cpt.encounter_uid,
cpt.procedure_num,
GREATEST(1, cpt.procedure_qty),
cpt.procedure_modifier1,
em.mid,
'MLP PRIMARY'
FROM
tbl_event_cpt_pro cpt
JOIN tbl_event_em_pro em USING (encounter_uid)
WHERE
em.mid <> '' AND em.shared = 0 UNION ALL SELECT
cpt.work_item_uid,
cpt.encounter_uid,
cpt.procedure_num,
GREATEST(1, cpt.procedure_qty),
cpt.procedure_modifier1,
em.em_provider,
'PHYSICIAN (NO SEC)'
FROM
tbl_event_cpt_pro cpt
JOIN tbl_event_em_pro em USING (encounter_uid)
WHERE
em.mid = '' AND em.shared = 0) T USING (work_item_uid , encounter_uid)
LEFT JOIN
(SELECT
work_item_uid,
cpt_hcpcs_code AS cpt,
MIN(client_proc_desc) AS client_proc_desc,
client_proc_desc AS descrip,
charge_amt AS charge_amt
FROM
tbl_charge_master
WHERE
charge_type = 'ED_PROFEE'
AND effective_date = '2015-01-01'
GROUP BY work_item_uid , cpt_hcpcs_code) cm USING (work_item_uid , cpt)
LEFT JOIN
tbl_rvu_master WithMod ON WithMod.hcpcs = cpt
AND WithMod.modifier = mod1
AND WithMod.effective_date = '2015-01-01'
LEFT JOIN
tbl_rvu_master WithoutMod ON WithoutMod.hcpcs = cpt
AND WithoutMod.modifier = ''
AND WithoutMod.effective_date = '2015-01-01'
LEFT JOIN
tbl_cpt_blacklist bl ON bl.cpt_code = cpt
AND bl.charge_type = 'ED_PROFEE'
AND (bl.work_item_uid IS NULL
OR bl.work_item_uid = vw.work_item_uid)
WHERE
bl.cpt_code IS NULL AND Billed
GROUP BY prov , role
ORDER BY vw.encounter_dos , patient_fin , prov;
Here is the output of Explain for above query:以下是上述查询的解释输出:
---+-----------------------------------------------------+--------+---------------------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------+--------------------+--------+-------------------------------------------------------------------------------------------------+--------------+---------+-----------------------------------------------------+--------+---------------------------------------------------------------------+
| 1 | PRIMARY | tbl_work_item | index | PRIMARY,unique_wi_fac,idx_facility,idx_wi | idx_facility | 4 | NULL | 60 | Using index; Using temporary; Using filesort |
| 1 | PRIMARY | tbl_facility | eq_ref | PRIMARY | PRIMARY | 4 | clear21.tbl_work_item.facility_id | 1 | Using index |
| 1 | PRIMARY | <derived3> | ref | <auto_key0> | <auto_key0> | 4 | clear21.tbl_work_item.work_item_uid | 3961 | NULL |
| 1 | PRIMARY | tbl_encounter | eq_ref | PRIMARY | PRIMARY | 4 | T.encounter_uid | 1 | NULL |
| 1 | PRIMARY | <derived2> | ref | <auto_key0> | <auto_key0> | 8 | T.encounter_uid,clear21.tbl_work_item.work_item_uid | 4329 | Using where |
| 1 | PRIMARY | <derived9> | ref | <auto_key0> | <auto_key0> | 42 | clear21.tbl_work_item.work_item_uid,T.cpt | 1074 | Using where |
| 1 | PRIMARY | WithMod | eq_ref | PRIMARY | PRIMARY | 67 | T.cpt,T.mod1,const | 1 | NULL |
| 1 | PRIMARY | WithoutMod | eq_ref | PRIMARY | PRIMARY | 67 | T.cpt,const,const | 1 | Using where |
| 1 | PRIMARY | bl | ref | cpt_code,work_item_uid,charge_type | cpt_code | 121 | T.cpt,const | 1 | Using where; Not exists; Using index |
| 9 | DERIVED | tbl_charge_master | ref | uniq_wi_type_date_cpt_cat,charge_type,wi_pt_ft_hcpcs_date,idx_wi_type_dt_cpt,idx_wi_type_cpt_dt | charge_type | 98 | const | 107469 | Using index condition; Using where; Using temporary; Using filesort |
| 3 | DERIVED | tbl_event_em_pro | ALL | em_level,idx_mid_em_shared | NULL | NULL | NULL | 236913 | Using where |
| 4 | UNION | tbl_event_em_pro | ALL | em_level,idx_mid_em_shared | NULL | NULL | NULL | 236913 | Using where |
| 5 | UNION | tbl_event_em_pro | ALL | em_level,idx_mid_em_shared | NULL | NULL | NULL | 236913 | Using where |
| 6 | UNION | cpt | ALL | idx_enc_uid | NULL | NULL | NULL | 13554 | NULL |
| 6 | UNION | em | ref | idx_enc_uid | idx_enc_uid | 4 | clear21.cpt.encounter_uid | 1 | Using where |
| 7 | UNION | cpt | ALL | idx_enc_uid | NULL | NULL | NULL | 13554 | NULL |
| 7 | UNION | em | ref | idx_enc_uid | idx_enc_uid | 4 | clear21.cpt.encounter_uid | 1 | Using where |
| 8 | UNION | cpt | ALL | idx_enc_uid | NULL | NULL | NULL | 13554 | NULL |
| 8 | UNION | em | ref | idx_enc_uid | idx_enc_uid | 4 | clear21.cpt.encounter_uid | 1 | Using where |
| NULL | UNION RESULT | <union3,4,5,6,7,8> | ALL | NULL | NULL | NULL | NULL | NULL | Using temporary |
| 2 | DERIVED | ed | ALL | idx_enc_uid,encounter_status | NULL | NULL | NULL | 529111 | Using where; Using temporary; Using filesort |
| 2 | DERIVED | e | eq_ref | PRIMARY | PRIMARY | 4 | clear21.ed.encounter_uid | 1 | NULL |
| 2 | DERIVED | pro | ref | idx_enc_uid,work_item_uid,work_item_uid_2 | idx_enc_uid | 4 | clear21.ed.encounter_uid | 1 | Using where |
| 2 | DERIVED | fac | ref | idx_enc_uid,work_item_uid,work_item_uid_2,encounter_uid | idx_enc_uid | 4 | clear21.ed.encounter_uid | 1 | Using where |
+----+--------------+--------------------+--------+-------------------------------------------------------------------------------------------------+--------------+---------+-----------------------------------------------------+--------+---------------------------------------------------------------------+
24 rows in set (0.00 sec)
Though I replaced the view from the query for some optimization.虽然我从查询中替换了视图以进行一些优化。 Its quite slow to be executed.
执行起来很慢。
How could I modify the SQL to reduce the execution time to least?如何修改 SQL 以将执行时间减少到最少? Any suggestions/improvements will help me a lot.
任何建议/改进都会对我有很大帮助。
TABLE FOR: tbl_event_em_pro表:tbl_event_em_pro
CREATE TABLE `tbl_event_em_pro` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`encounter_uid` int(11) NOT NULL,
`em_level` varchar(10) NOT NULL,
`em_modifier1` varchar(10) DEFAULT NULL,
`em_modifier2` varchar(10) DEFAULT NULL,
`em_provider` varchar(75) DEFAULT NULL,
`em_midlevel` varchar(75) DEFAULT NULL,
`em_type` varchar(10) DEFAULT NULL,
`em_downcode` int(1) NOT NULL DEFAULT '0',
`em_reason` varchar(20) DEFAULT NULL,
`mdm_total` varchar(20) DEFAULT NULL,
`userid` varchar(50) NOT NULL,
`user_time_entered` datetime NOT NULL,
`qa_disagree` tinyint(1) NOT NULL DEFAULT '0',
`qa_procedure_num` varchar(10) DEFAULT NULL,
`qa_procedure_qty` int(5) DEFAULT NULL,
`qa_procedure_modifier` varchar(10) DEFAULT NULL,
`qa_procedure_provider` varchar(75) DEFAULT NULL,
`qa_note` varchar(255) DEFAULT NULL,
`qa_userid` varchar(50) DEFAULT NULL,
`qa_user_time_entered` datetime DEFAULT NULL,
`qa_reason` varchar(75) DEFAULT NULL,
`mid` varchar(75) DEFAULT NULL,
`dos` date DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_enc_uid` (`encounter_uid`),
KEY `em_provider` (`em_provider`),
KEY `em_midlevel` (`em_midlevel`),
KEY `qa_procedure_provider` (`qa_procedure_provider`),
KEY `userid` (`userid`),
KEY `qa_userid` (`qa_userid`),
KEY `work_item_uid` (`work_item_uid`),
KEY `work_item_uid_2` (`work_item_uid`,`encounter_uid`),
KEY `em_level` (`em_level`),
KEY `mdm_total` (`mdm_total`),
KEY `cosigning_physician` (`cosigning_physician`),
KEY `idx_mid_em_shared` (`em_level`,`mid`,`shared`),
CONSTRAINT `tbl_event_em_pro_ibfk_1` FOREIGN KEY (`encounter_uid`) REFERENCES `tbl_encounter` (`encounter_uid`),
CONSTRAINT `tbl_event_em_pro_ibfk_10` FOREIGN KEY (`work_item_uid`) REFERENCES `tbl_work_item` (`work_item_uid`) ON DELETE CASCADE,
CONSTRAINT `tbl_event_em_pro_ibfk_11` FOREIGN KEY (`userid`) REFERENCES `tbl_user` (`user_email_address`),
CONSTRAINT `tbl_event_em_pro_ibfk_12` FOREIGN KEY (`work_item_uid`, `encounter_uid`) REFERENCES `tbl_encounter_detail` (`work_item_uid`, `encounter_uid`),
CONSTRAINT `tbl_event_em_pro_ibfk_15` FOREIGN KEY (`cosigning_physician`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_em_pro_ibfk_2` FOREIGN KEY (`em_provider`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_em_pro_ibfk_3` FOREIGN KEY (`em_midlevel`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_em_pro_ibfk_4` FOREIGN KEY (`qa_procedure_provider`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_em_pro_ibfk_5` FOREIGN KEY (`userid`) REFERENCES `tbl_user` (`user_email_address`),
CONSTRAINT `tbl_event_em_pro_ibfk_6` FOREIGN KEY (`qa_userid`) REFERENCES `tbl_user` (`user_email_address`),
CONSTRAINT `tbl_event_em_pro_ibfk_7` FOREIGN KEY (`work_item_uid`) REFERENCES `tbl_work_item` (`work_item_uid`),
CONSTRAINT `tbl_event_em_pro_ibfk_9` FOREIGN KEY (`encounter_uid`) REFERENCES `tbl_encounter` (`encounter_uid`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21282825 DEFAULT CHARSET=utf8
TABLE for: tbl_event_cpt_pro表:tbl_event_cpt_pro
CREATE TABLE `tbl_event_cpt_pro` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`encounter_uid` int(11) NOT NULL,
`procedure_num` varchar(10) NOT NULL,
`procedure_qty` int(11) NOT NULL DEFAULT '1',
`procedure_modifier1` varchar(10) DEFAULT NULL,
`procedure_modifier2` varchar(10) DEFAULT NULL,
`procedure_provider` varchar(75) DEFAULT NULL,
`mid_provider` varchar(75) DEFAULT NULL,
`userid` varchar(50) NOT NULL,
`user_time_entered` datetime NOT NULL,
`qa_disagree` tinyint(1) NOT NULL DEFAULT '0',
`qa_procedure_num` varchar(10) DEFAULT NULL,
`qa_procedure_qty` int(5) DEFAULT NULL,
`qa_procedure_modifier` varchar(10) DEFAULT NULL,
`qa_procedure_provider` varchar(75) DEFAULT NULL,
`qa_note` varchar(255) DEFAULT NULL,
`qa_userid` varchar(50) DEFAULT NULL,
`qa_user_time_entered` datetime DEFAULT NULL,
`qa_reason` varchar(75) DEFAULT NULL,
`dos` date DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_enc_uid` (`encounter_uid`),
KEY `procedure_provider` (`procedure_provider`),
KEY `mid_provider` (`mid_provider`),
KEY `qa_procedure_provider` (`qa_procedure_provider`),
KEY `userid` (`userid`),
KEY `qa_userid` (`qa_userid`),
KEY `work_item_uid` (`work_item_uid`),
KEY `work_item_uid_2` (`work_item_uid`,`encounter_uid`),
KEY `cosigning_physician` (`cosigning_physician`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_1` FOREIGN KEY (`encounter_uid`) REFERENCES `tbl_encounter` (`encounter_uid`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_10` FOREIGN KEY (`work_item_uid`) REFERENCES `tbl_work_item` (`work_item_uid`) ON DELETE CASCADE,
CONSTRAINT `tbl_event_cpt_pro_ibfk_11` FOREIGN KEY (`userid`) REFERENCES `tbl_user` (`user_email_address`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_12` FOREIGN KEY (`work_item_uid`, `encounter_uid`) REFERENCES `tbl_encounter_detail` (`work_item_uid`, `encounter_uid`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_13` FOREIGN KEY (`cosigning_physician`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_2` FOREIGN KEY (`procedure_provider`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_3` FOREIGN KEY (`mid_provider`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_4` FOREIGN KEY (`qa_procedure_provider`) REFERENCES `tbl_provider` (`provider_lov`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_5` FOREIGN KEY (`userid`) REFERENCES `tbl_user` (`user_email_address`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_6` FOREIGN KEY (`qa_userid`) REFERENCES `tbl_user` (`user_email_address`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_7` FOREIGN KEY (`work_item_uid`) REFERENCES `tbl_work_item` (`work_item_uid`),
CONSTRAINT `tbl_event_cpt_pro_ibfk_9` FOREIGN KEY (`encounter_uid`) REFERENCES `tbl_encounter` (`encounter_uid`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=21014137 DEFAULT CHARSET=utf8
Seems like, for starters, tbl_event_em_pro
needs an index in encounter_uid
.好像,对于初学者来说,
tbl_event_em_pro
需要在索引encounter_uid
。 Notice, in the EXPLAIN
how those rows say 'ALL' and have a large number of rows.请注意,在
EXPLAIN
,这些行如何表示“全部”并且有大量行。
Don't use LEFT JOIN
when JOIN
will suffice;当
JOIN
足够时不要使用LEFT JOIN
; it limits the Optimizer's choices.它限制了优化器的选择。
For further help, we need:如需进一步帮助,我们需要:
Better indentation so that we can see the nested structure of the joins, unions, subqueries, etc.更好的缩进,以便我们可以看到连接、联合、子查询等的嵌套结构。
SHOW CREATE TABLE
at least for the critical tables.至少对于关键表
SHOW CREATE TABLE
表。
Update更新
tbl_charge_master
needs INDEX(charge_type, effective_date)
tbl_charge_master
需要INDEX(charge_type, effective_date)
Isolate this and time it.隔离这个并计时。 If it is very slow, as I think, let's focus on optimizing it.
如果它很慢,我认为,让我们专注于优化它。 See if you can get rid of the
UNION
and use CASE...
.看看你是否可以摆脱
UNION
并使用CASE...
。
SELECT work_item_uid, encounter_uid, em_level AS cpt, 1 AS qty,
em_modifier1 AS mod1, mid AS Prov, 'MLP PRIMARY' AS Role
FROM tbl_event_em_pro
WHERE em_level <> '0'
AND mid <> ''
AND shared = 0
UNION ALL
SELECT work_item_uid, encounter_uid, em_level AS cpt, 1 AS qty,
em_modifier1 AS mod1, em_provider, 'PHYSICIAN (NO SEC)'
FROM tbl_event_em_pro
WHERE em_level <> '0'
AND mid <> ''
AND shared = 1
UNION ALL
SELECT work_item_uid, encounter_uid, em_level AS cpt, 1 AS qty,
em_modifier1 AS mod1, em_provider, 'PHYSICIAN (NO SEC)'
FROM tbl_event_em_pro
WHERE em_level <> '0'
AND mid = ''
AND shared = 0
UNION ALL
SELECT cpt.work_item_uid, cpt.encounter_uid, cpt.procedure_num,
GREATEST(1, cpt.procedure_qty), cpt.procedure_modifier1,
em.em_provider, 'PHYSICIAN (NO SEC)'
FROM tbl_event_cpt_pro cpt
JOIN tbl_event_em_pro em USING (encounter_uid)
WHERE em.mid <> ''
AND em.shared = 1
UNION ALL
SELECT cpt.work_item_uid, cpt.encounter_uid, cpt.procedure_num,
GREATEST(1, cpt.procedure_qty), cpt.procedure_modifier1,
em.mid, 'MLP PRIMARY'
FROM tbl_event_cpt_pro cpt
JOIN tbl_event_em_pro em USING (encounter_uid)
WHERE em.mid <> ''
AND em.shared = 0
UNION ALL
SELECT cpt.work_item_uid, cpt.encounter_uid, cpt.procedure_num,
GREATEST(1, cpt.procedure_qty), cpt.procedure_modifier1,
em.em_provider, 'PHYSICIAN (NO SEC)'
FROM tbl_event_cpt_pro cpt
JOIN tbl_event_em_pro em USING (encounter_uid)
WHERE em.mid = ''
AND em.shared = 0) T USING (work_item_uid , encounter_uid)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.