2014-02-12 23 views
0

我需要結合5桌:SQL查詢來加入與和函數的多個表

history - (contract_no, run_date, dataset_code) 
premium - (contract_no, trx_amt) 
contract - (contract_no, status, owner_idn) 
confund - (contract_no, blg_method, blg_status) 
client - (client_idn, client_ssn) 

最後,我要的結果顯示是這樣的:沒有

合同| Run_Date | DataSet_Code |狀態| Blg_Method | Blg_Status | Suspense_Total

我最大的問題是讓SUM函數工作。特級表中的trx_amt是我得到我的懸念總數的地方。合約可以有多行。此外,在該表中,trx_amt可以來自contract_no或client_ssn。

SELECT history_contract_no, 
     history_run_date, 
     history_dataset_code, 
     contract_status, 
     confund_blg_method, 
     confund_blg_status, 
     SUM(premium_trx_amt) 

FROM HISTORY LEFT JOIN PREMIUM 
ON  history_contract_no = premium_contract_no JOIN CONFUND 
ON  history_contract_no = confund_contract_no JOIN CONTRACT 
ON  confund_contract_no = contract_contract_no 

WHERE history_dataset_code in ('CONTINU1', 'CONTINU2') 
AND history_run_date between 20140118 and 20140124 

GROUP BY history_contract_no 

沒有上面的SUM函數,我可以關閉,但如果合同有多個懸念項,我會得到多行。我無法弄清楚如何在結果中總結這些行。我甚至無法弄清楚如何引入第五個表格「client」,這樣我就可以總結出位於client_ssn而不是contract_no下的懸念條目。 premium字段中的contract_no是SSN或contract_no。我真的很想做更復雜的查詢,所以如果你知道一個好的資源或教程,請讓我知道。

謝謝!

+1

您的GROUP BY條款在哪裏? – Barmar

+0

你在兩個連接中有什麼'history_field'? – Barmar

+0

如果你需要加入兩個不同的表格併合並結果,你應該使用UNION – Barmar

回答

0

爲了使用Sum函數,您需要在查詢中包含'Group By'子句。

嘗試這樣:

SELECT history_contract_no, 
     history_run_date, 
     history_dataset_code, 
     contract_status, 
     confund_blg_method, 
     confund_blg_status, 
     SUM(premium_trx_amt) 

FROM HISTORY LEFT JOIN PREMIUM 
ON  history_field = premium_contract_no JOIN CONFUND 
ON  history_field = confund_contract_no JOIN CONTRACT 
ON  confund_contract_no = contract_contract_no 

WHERE history_dataset_code in ('CONTINU1', 'CONTINU2') 
AND history_run_date between 20140118 and 20140124 

GROUP BY history_contract_no 
, history_run_date 
, history_dataset_code 
, contract_status 
, confund_blg_method 
,confund_blg_status 

如果你想加入的客戶表爲好,發現其在該表中的字段感興趣表之間的關聯。

+0

這工作在正確地求和!我正在研究一個UNION教程,以查看我是否無法引入客戶端表。它看起來像我的錯誤沒有列出GROUP BY部分中的所有columbs? –

+0

我知道表格如何關聯,但我無法弄清楚如何將它們結合在一起。合約表具有與CLIENT.client_IDN匹配的onwer_IDN。然後我可以將CLIENT.client_SSN關聯到PREMIUM表上的contract_no。 –

+0

好像你需要遵循同樣的策略。嘗試添加另一個連接,例如'JOIN CLIENT \t \t ON contract_owner_id = client_client_idn'並在您的select語句中,添加另一個總和字段,如「SUM(client_client_ssn)'。我希望我能正確理解這一點。 – j03z