我有以下数据:
ID | Field A | Quantity
1 | A | 10
2 | B | 20
3 | C | 30
我想对ID为1
和3
的字段求和,结果将是:
ID | Field A | Quantity
1 | A | 40
2 | B | 20
对我来说,听起来更像是代码操作而不是SQL,但仍然想尝试一下。
我的DMBS是sql-server。
答案 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
值的逻辑,这似乎很符合您的要求