簡體   English   中英

SQL連接兩個查詢並求和類似記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM