我正在尝试连接多个表(总共11个表)并希望将Case_Id列合并为最终的连接结果。
帐户可以是主要保险,二级保险和/或两者兼而有之。
当我运行以下查询时,我只从JOIN“k”获得Case_Id。如何从JOIN“k”和“l”查询获取Case_Id?我正在使用Claudera Hadoop。
例如,我有以下简化版本:
SELECT DISTINCT a1.id AS Account_Id,
k.Case_Id,
k.Primary_Insurance_Payer_Name,
l.Secondary_Insurance_Payer_Name
FROM account a1 left outer JOIN
(
SELECT k3.Name AS Primary_Insurance_Payer_Name,
k3.Id AS Account_Id,
k4.Id as Case_Id
FROM patient k1
JOIN patient_insurance k2
ON k1.A360_Primary_Insurance__c=k2.Id
JOIN account k3
ON k2.A360_Payer__c=k3.Id
left outer join pep_case k4
on k4.enrolled_patient__c=k1.id
) k ON a1.id=k.Account_Id left outer JOIN
(
SELECT l3.Name AS Secondary_Insurance_Payer_Name,
l3.Id AS Account_Id,
l4.Id as Case_Id
FROM patient l1
JOIN patient_insurance l2
ON l1.A360_Secondary_Insurance__c=l2.Id
JOIN account l3
ON l2.A360_Payer__c=l3.Id
left outer join pep_case l4
on l4.enrolled_patient__c=l1.id) l ON a1.id=l.Account_Id
答案 0 :(得分:0)
执行类似于处理保险付款人名称的方法,在子查询中为它们提供不同的别名,然后引用最终选择条款中的那些
SELECT DISTINCT a1.id AS Account_Id , k.k_Case_Id , l.l_Case_Id , k.Primary_Insurance_Payer_Name , l.Secondary_Insurance_Payer_Name FROM account a1 LEFT OUTER JOIN ( SELECT k3.Name AS Primary_Insurance_Payer_Name , k3.Id AS Account_Id , k4.Id AS k_Case_Id FROM patient k1 JOIN patient_insurance k2 ON k1.A360_Primary_Insurance__c = k2.Id JOIN account k3 ON k2.A360_Payer__c = k3.Id LEFT OUTER JOIN pep_case k4 ON k4.enrolled_patient__c = k1.id ) k ON a1.id = k.Account_Id LEFT OUTER JOIN ( SELECT l3.Name AS Secondary_Insurance_Payer_Name , l3.Id AS Account_Id , l4.Id AS l_Case_Id FROM patient l1 JOIN patient_insurance l2 ON l1.A360_Secondary_Insurance__c = l2.Id JOIN account l3 ON l2.A360_Payer__c = l3.Id LEFT OUTER JOIN pep_case l4 ON l4.enrolled_patient__c = l1.id ) l ON a1.id = l.Account_Id WHERE k_Case_Id = l_Case_Id
连接保险信息两次的单个选择查询(请参阅别名ppi和spi)可能有效。 nb:我还将联接从patient
更改为pep_case
到内部联接。
SELECT
pac.Name AS Primary_Insurance_Payer_Name
, sac.Name AS Secondary_Insurance_Payer_Name
, pac.Id AS Account_Id
, pc.Id AS Case_Id
FROM patient p
INNER JOIN pep_case pc ON p.id = pc.enrolled_patient__c
INNER JOIN patient_insurance ppi ON p.A360_Primary_Insurance__c = ppi.Id
INNER JOIN account pac ON ppi.A360_Payer__c = pac.Id
LEFT JOIN patient_insurance spi ON p.A360_Secondary_Insurance__c = spi.Id
LEFT JOIN account sac ON spi.A360_Payer__c = sac.Id