对具有不同ID的两行求和

时间:2018-11-27 16:26:32

标签: sql sql-server

我有以下数据:

ID | Field A | Quantity
1  |  A   | 10 
2  |  B   | 20
3  |  C   | 30

我想对ID为13的字段求和,结果将是:

ID | Field A | Quantity
1  |  A   | 40 
2  |  B   | 20

对我来说,听起来更像是代码操作而不是SQL,但仍然想尝试一下。

我的DMBS是sql-server。

3 个答案:

答案 0 :(得分:2)

您可以尝试使用以下情况下的情况

select case when id in(1,3) then 'A' else 'B' end as field,sum(Quantity) as Quantity
from tablename group by case when id in(1,3) then 'A' else 'B' end

答案 1 :(得分:2)

我认为简单的聚合可以满足您的需求

select min(id) as id, min(fieldA) as fieldA, sum(quantity) as quantity
from t
group by (case when id in (1, 3) then 1 else id end);

答案 2 :(得分:1)

不确定使用哪种方法来组合1,3 ID,但可以尝试使用大小写:

select 
case when id in (1,3) then 1 else id end
, min("Field A") "Field A"
, sum(quantity) quantity from myTable 
group by case when id in (1,3) then 1 else id end

以上使用group by汇总数据。在这种情况下,它使用某种逻辑来组织ID字段以合并1,3。所有其他唯一的ID将具有其自己的组。

聚合函数会处理其他字段,包括为min()Field A值的逻辑,这似乎很符合您的要求