mysql - 通过联合加入 2 个查询时,如何消除重复数据?
问题描述
我有 2 个查询提取相同的字段,只有 diff 是 where 子句中的子查询返回的内容。
第一个查询基于代码和 insurance_group_name 拉取
SELECT
cpt_codes.code,
ii.insurance_group_name,
ii.insurance_group_id,
CAST(AVG(dcc_total_view.allowedAmount) AS decimal(10, 2)) `AVG Allowed by Group Name`,
CAST(AVG(rc_total_view.runningCollectedReceivedByProvider) AS decimal(10, 2)) `AVG Collected by Group Name`,
GROUP_CONCAT(DISTINCT file_acceptance) AS `FAN`
FROM ds
LEFT OUTER JOIN dd
ON ds.dos_detail_id = dd.id
LEFT OUTER JOIN ii
ON ds.ii_id = ii.id
LEFT OUTER JOIN dcc
ON ds.id = dcc.dos_id
LEFT OUTER JOIN cpt_codes
ON dcc.cpt_id = cpt_codes.id
LEFT OUTER JOIN bi
ON ds.billing_id = bi.id
LEFT OUTER JOIN cs
ON bi.claim_status = cs.id
LEFT OUTER JOIN rc_total_view
ON ds.payment_information_id = rc_total_view.id
LEFT OUTER JOIN dcc_total_view
ON ds.id = dcc_total_view.dos_id
WHERE (cpt_codes.code, ii.insurance_group_name) IN (SELECT
cpt_codes.code,
ii.insurance_group_name
FROM ds
LEFT OUTER JOIN dd
ON ds.dos_detail_id = dd.id
LEFT OUTER JOIN ii
ON ds.ii_id = ii.id
LEFT OUTER JOIN dcc
ON ds.id = dcc.dos_id
LEFT OUTER JOIN cpt_codes
ON dcc.cpt_id = cpt_codes.id
LEFT OUTER JOIN bi
ON ds.billing_id = bi.id
LEFT OUTER JOIN cs
ON bi.claim_status = cs.id
WHERE cs.status = 'Pending'
AND date_of_service BETWEEN '2017/01/01' AND '2018/08/31'
AND (dcc.rev_code = '0490'
OR dcc.rev_code = '0360'))
AND date_of_service BETWEEN '2017/01/01' AND '2018/08/31'
AND (dcc.rev_code = '0490'
OR dcc.rev_code = '0360')
AND dcc_total_view.allowedAmount > 0
GROUP BY code ,insurance_group_name
这将返回这样的一行
代码 | 保险组名称 | 保险组 ID | 组名允许的 AVG | 按组名收集的 AVG | 扇子 |
---|---|---|---|---|---|
20553 | AE | 215825 | 1440.97 | 889.48 | DELA081518,MOLDGILR919,SHIC060618,MANS072718,DELA053018,DELS072518 |
第二个基于 insurance_group_id 拉
SELECT
cpt_codes.code,
ii.insurance_group_name,
ii.insurance_group_id,
CAST(AVG(dcc_total_view.allowedAmount) AS decimal(10, 2)) `AVG Allowed by Group Name`,
CAST(AVG(rc_total_view.runningCollectedReceivedByProvider) AS decimal(10, 2)) `AVG Collected by Group Name`,
GROUP_CONCAT(DISTINCT file_acceptance) AS `FAN`
FROM ds
LEFT OUTER JOIN dd
ON ds.dos_detail_id = dd.id
LEFT OUTER JOIN ii
ON ds.ii_id = ii.id
LEFT OUTER JOIN dcc
ON ds.id = dcc.dos_id
LEFT OUTER JOIN cpt_codes
ON dcc.cpt_id = cpt_codes.id
LEFT OUTER JOIN bi
ON ds.billing_id = bi.id
LEFT OUTER JOIN cs
ON bi.claim_status = cs.id
LEFT OUTER JOIN rc_total_view
ON ds.payment_information_id = rc_total_view.id
LEFT OUTER JOIN dcc_total_view
ON ds.id = dcc_total_view.dos_id
WHERE (cpt_codes.code, ii.insurance_group_id) IN (SELECT
cpt_codes.code,
ii.insurance_group_id
FROM ds
LEFT OUTER JOIN dd
ON ds.dos_detail_id = dd.id
LEFT OUTER JOIN ii
ON ds.ii_id = ii.id
LEFT OUTER JOIN dcc
ON ds.id = dcc.dos_id
LEFT OUTER JOIN cpt_codes
ON dcc.cpt_id = cpt_codes.id
LEFT OUTER JOIN bi
ON ds.billing_id = bi.id
LEFT OUTER JOIN cs
ON bi.claim_status = cs.id
WHERE cs.status = 'Pending'
AND date_of_service BETWEEN '2017/01/01' AND '2018/08/31'
AND (dcc.rev_code = '0490'
OR dcc.rev_code = '0360'))
AND date_of_service BETWEEN '2017/01/01' AND '2018/08/31'
AND (dcc.rev_code = '0490'
OR dcc.rev_code = '0360')
AND dcc_total_view.allowedAmount > 0
GROUP BY code ,insurance_group_id
这将返回一行
代码 | 保险组名称 | 保险组 ID | 组名允许的 AVG | 按组名收集的 AVG | 扇子 |
---|---|---|---|---|---|
20553 | AE | 10198703100012 | 250.25 | 150.36 | MOLDGILR919 |
当对这两个进行联合时,我发现一些数据重复,其中第二个查询返回的 FAN # 包含在第一个查询的输出中,因为您可以看到 FAN# 是构成第一个脚本结果的部分.
我如何将这两个查询的结果连接在一起,并确保第二个查询中的 FAN# 是否已经包含在第一个给定代码的结果中(例如示例中的 20553),那么第二个查询中的行将不包括在内在最终输出中?
我希望我在这里包含了足够的信息和细节来帮助我,我非常感谢任何帮助解决这个问题。
解决方案
将您的第一个语句的输出放在一个临时表中,命名为#temp1
,并将您的第二个查询的输出放在一个名为 的临时表中#temp2
。
之后,您可以执行以下操作:
SELECT *
FROM #temp1
UNION ALL
SELECT *
FROM #temp2
WHERE code NOT IN (SELECT code FROM #temp1)
编辑:由于风扇问题..
我认为您应该以这种方式更改查询:不要使用 GROUP_CONCAT(...) 将不同 FAN 的结果组合在一行中,并添加file_acceptance
到 GROUP BY 子句
这样,您将获得每个 FAN 的个人记录,并且在UNION ALL
您可以再次使用 GROUP_CONCAT() 之后。
由于 AVG() 字段,这可能需要更多的思考/调整工作......
推荐阅读
- amazon-web-services - 根据 Elastic Beanstalk 环境加载 appSettings
- python - 如何在生产中使用 doc2vec 模型?
- excel - 如何删除Excel中打印区域之外的所有内容?
- c# - 从 WCF 应用程序检索数据集
- tibco - 如何在 Tibco Administrator 中恢复/获取所有服务实例值?
- python - 获取数据所在的 URL
- django - 如何在 Django 2.2 中克隆模型及其依赖项?
- autodesk-forge - 在firefox的forge查看器中禁用触摸板上的页面滚动滚动
- python - SQLAlchemy 警告:列不会成为声明性映射的一部分
- javascript - JS/DOM,性能:您是否应该尝试使用尽可能少的事件侦听器?