[英]SQL to join two queries and sum like records
我正在使用asp.net編寫Web表單頁面。 我有兩個不同的表。 這兩個表都有相同的列,只是數據不同。 例如:
Table 1: col1, col2, col3
123 $12.54 Tom
34 $7.00 Jan
Table 2: col1, col2, col3
123 $125.00 Tom
56 $12.00 Joe
我正在嘗試編寫一個將兩個表組合在一起的sql語句,如果表1中的Col1與表2中的col1相同,我想將列2的值加在一起。 例如:
Col1 col2 col3
123 $137.54 Tom
34 $7.00 Jan
56 $12.00 Joe
以下是sql查詢:
表格1:
SELECT ABAN8 as Number, SUM(SDAEXP * .01) as SaleAmount, A5POPN as Rep
FROM KAIPRDDTA.F0101, KAIPRDDTA.F4211, KAIPRDDTA.F0301
WHERE A5AN8 = ABAN8
AND ABAN8 = SDAN8
AND SDKCOO = '00001'
AND SDDCTO not like '%2'
AND A5DAOJ >= '118069'
AND A5DAOJ <= '118099'
GROUP BY ABALPH, A5POPN, ABAN8, A5UPMT, A5CMC1
表2:
SELECT ABAN8 as Number, SUM(SDAEXP * .01) as SaleAmount, A5POPN as Rep
FROM KAIPRDDTA.F0101, KAIPRDDTA.F42119, KAIPRDDTA.F0301
WHERE A5AN8 = ABAN8
AND ABAN8 = SDAN8
AND SDKCOO = '00001'
AND SDDCTO not like '%2'
AND A5DAOJ >= '118069'
AND A5DAOJ <= '118099'
GROUP BY ABALPH, A5POPN, ABAN8, A5UPMT, A5CMC1
我知道聯接語法已經過時,但這就是該公司使用它的方式。 讓我知道您是否需要更多信息,在此先感謝您的答復!
嗯,通過合並和完全外部聯接基本上很容易,盡管我不知道db2是否支持隱式完全外部聯接。
我要解決的是您發布的示例數據,而不是查詢,因為我希望能夠閱讀所寫內容,並且因為對於每個要閱讀此內容的人來說,它都將變得更加清晰-因此開始:
SELECT COALESCE(t1.col1, t2.col1) As col1,
COALESCE(t1.col2, 0) + COALESCE(t2.col2, 0) As col2,
COALESCE(t1.col3, t2.col3) As col3
FROM table1 as t1
FULL JOIN table12 as t2 ON t1.col1 = t2.col1
據我了解, DB2支持隱式左聯接和隱式右聯接 。 我找不到有關完全連接的任何信息,但我想它應該像這樣工作:
FROM table1 as t1, table2 as t2
WHERE t1.col1(+) = t2.col1(+)
在“分組依據”中的5列中,僅選擇了2列。 對於給定的編號和代表,您可能會獲得多個記錄。 檢查“ UNION ALL”是否滿足您的要求。
Select number, sum(SaleAmount) , Rep
from
( SELECT ABAN8 as Number, (SDAEXP * .01) as SaleAmount, A5POPN as Rep
FROM KAIPRDDTA.F0101, KAIPRDDTA.F4211, KAIPRDDTA.F0301
WHERE A5AN8 = ABAN8
AND ABAN8 = SDAN8
AND SDKCOO = '00001'
AND SDDCTO not like '%2'
AND A5DAOJ >= '118069'
AND A5DAOJ <= '118099'
union all
SELECT ABAN8 as Number, (SDAEXP * .01) as SaleAmount, A5POPN as Rep
FROM KAIPRDDTA.F0101, KAIPRDDTA.F42119, KAIPRDDTA.F0301
WHERE A5AN8 = ABAN8
AND ABAN8 = SDAN8
AND SDKCOO = '00001'
AND SDDCTO not like '%2'
AND A5DAOJ >= '118069'
AND A5DAOJ <= '118099'
) a
group by number , rep
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.