SQL 查詢聚合多個表中的資料
在SQL 中,可以使用各種技術來聚合多個表中的資料。以下是組合兩個表中的資料的查詢的場景和解決方案:
場景:
考慮兩個表,AP 和INV,都包含列[ PROJECT]和[值]。目標是檢索計算兩個表格中每個項目的 [Value] 總和的結果,結果格式如下:
PROJECT | SUM_AP | SUM_INV ---------+--------+-------- XXXXX | 500 | 800
錯誤查詢:
嘗試了以下查詢,但結果不準確sums:
SELECT AP.[PROJECT], SUM(AP.Value) AS SUM_AP, SUM(INV.Value) AS SUM_INV FROM AP INNER JOIN INV ON (AP.[PROJECT] = INV.[PROJECT]) WHERE AP.[PROJECT] = 'XXXXX' GROUP BY AP.[PROJECT]
錯誤結果的原因:
錯誤的查詢在應用總和之前對值進行分組,導致重複的項目值包含在總和中。
正確解:
解決為此,可以使用涉及子選擇的查詢:
SELECT AP1.[PROJECT], (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP, (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV FROM AP AS AP1 INNER JOIN INV AS INV1 ON (AP1.[PROJECT] = INV1.[PROJECT]) WHERE AP1.[PROJECT] = 'XXXXX' GROUP BY AP1.[PROJECT]
此查詢利用子選擇分別計算每個項目內的總和,消除重複值的問題並提供正確的聚合結果。
以上是如何使用子查詢正確聚合 SQL 中多個資料表的資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!