Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL连接两个查询和求和类记录_Sql_Asp.net_Vb.net_Db2 - Fatal编程技术网

SQL连接两个查询和求和类记录

SQL连接两个查询和求和类记录,sql,asp.net,vb.net,db2,Sql,Asp.net,Vb.net,Db2,我正在使用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 Col1 col2 col3 123

我正在使用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
Col1     col2     col3
123      $137.54    Tom
34       $7.00      Jan
56       $12.00     Joe
我正在尝试编写一个sql语句来组合这两个表,如果表1中的Col1与表2中的Col1相同,我想将第2列的值相加。例如:

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
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

我知道连接语法已经过时了,但这家公司就是这样使用的。如果您需要更多信息,请告诉我,并提前感谢您的回复

使用coalesce和完全外部连接基本上相当简单,不过我不知道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
据我所知。我找不到有关完全联接的任何信息,但我想它应该是这样工作的:

FROM table1 as t1, table2 as t2
WHERE t1.col1(+) = t2.col1(+)

在group by中的5列中,仅选择了2列。对于给定的号码和代表,您可能会获得多条记录。请检查所有工会是否满足您的要求

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 

您的数据样本和代码似乎不相关..1您提到了两个表,但您的查询有三个表。2标记您正在使用的数据库。在一家正确使用数据库的公司找份工作。我支持戈登的第三部分。隐式联接不仅已经过时,而且已经过时超过25年了!。还有,列名是怎么回事?你为之工作的公司是否在1985年陷入困境,当时因为内存太贵,一切都被缩短到最低限度?正是这种精神导致了人们对千年虫的狂热。。。你真的,真的应该找一家更好的公司为你工作。你为什么不试着帮忙,而不是担心我们两人都无法控制的事情呢?ZoharI在使用COALESCE,但没有想到要把销售额分成几部分,然后再加在一起。这对我有用,谢谢!很高兴提供帮助:-再次抱歉,如果我对这个问题的评论似乎冒犯了您,那不是我的本意。您引用的文档表明,首选显式外部联接语法,并且您只能在从另一个RDBMS查询时使用外部联接语法。@jmarkmurphy我到处都支持显式联接。OP在一家实施隐式联接的公司工作。你可以在问题的评论中读到。