2016-09-23 79 views
0

我有3個包含如下數據的表,我想將數據分組爲單個輸出。通過SQL Server中的多個表數據對組進行查詢

table1 
pid val 
1  1 
2  2 
 
table2 
id pid val 
1  1 1 
2  1 2 
3  2 1 
 
table3 
id pid val 
1  1 1 
2  1 2 
3  2 1 
4  2 1 

所需的輸出:

 
pid output 
1  1  (table1 val + table2 Sum(val) - table3 Sum(val)) 
2  1  (table1 val + table2 Sum(val) - table3 Sum(val)) 

請優化查詢,可以做到這一點沒有任何臨時表的幫助。

回答

0

假設pid是表1的主鍵,你可以使用這個

SELECT 
    t1.pid, 
    t1.val + t2.sumval - t3.sumval 
FROM 
    table1 t1 
INNER JOIN 
    (SELECT 
     pid, SUM(val) as sumval 
    FROM 
     table2 
    GROUP BY 
     pid) t2 
ON 
    t2.pid = t1.pid 
INNER JOIN 
    (SELECT 
     pid, SUM(val) as sumval 
    FROM 
     table3 
    GROUP BY 
     pid) t3 
ON 
    t3.pid = t1.pid; 
+0

謝謝,這是我的工作也沒關係,並採取時間也是足夠大的數據集。 – ketan

相關問題