合并具有相同ID的行

时间:2019-08-13 10:10:16

标签: sql

我的数据库中有很多表,这些表包括:RowID,ProductID和数值(数值可以是NULL,这意味着无穷大)。在表中可以有许多具有相同ProductId的行。是否可以使函数接受某些表(不是全部,仅由我选择)并返回包含每个表的所有ProductId的新表,但表中只有一个ProductId,而数值是每个表中所有行的总和表。例如

表1:

RowID   ProductID   Numeric Value    
0       1           1.5    
1       1           3.5    
2       2           4

表2:

RowID   ProductID   Numeric Value    
0       1           6    
1       3           1.25
2       3           NULL

返回表:

ProductID   Numeric Value    
1           11 (1.5+3.5+6)    
2           4    
3           NULL (1.25 + NULL) 

*它也可以返回0而不是NULL,所有数值均为正数,因此0可以表示无穷大

1 个答案:

答案 0 :(得分:0)

我认为您可以先合并两列,然后将它们分组-

SELECT PID, CASE WHEN COUNT(*) = COUNT(NV) THEN SUM(NV) ELSE NULL END
FROM (SELECT ProductID PID, Numeric Value NV
      FROM TABLE_1
      UNION ALL
      SELECT ProductID, Numeric Value
      FROM TABLE_2) T
GROUP BY PID