[英]SQL Query to Join Multiple Tables with Sum Function
我需要合並5個表:
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)
最終,我希望結果顯示如下:
合同號| 運行日期| 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。
我剛接觸SQL(幾個月),我真的很想做更復雜的查詢,因此,如果您知道一個好的資源或教程,請告訴我。
謝謝!
為了使用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
如果您也想加入client表,請查找該表中哪個字段與感興趣的表相關。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.