有没有办法只对表的特定组求和?例如,如果我有
KEYS / VALS
A / 1
A / 2
B / 3
B / 3
C / 1
C / 1
我想通过仅对A和C进行分组,而不是像上面的B那样对其他任何人进行分组:
KEYS / VALS
A / 3
B / 3
B / 3
C / 2
使用存储过程这似乎很简单,但我不确定是否可以使用查询?
答案 0 :(得分:3)
UNION ALL
非B部分与B部分:
select keys, sum(vals)
from tablename
where keys <> 'B'
group by keys
union all
select keys, vals
from tablename
where keys = 'B'
答案 1 :(得分:0)
只有使用union才能实现此结果,因为任何group by都将应用于整个结果集。使用union,您可以组合2个独立查询,因此group by仅适用于其中一个查询:
select keys, sum(vals) as vals
from yourtable
where keys in ('A','B')
group by keys
union
select keys, vals
from yourtable
where keys not in ('A','B')
答案 2 :(得分:0)
请尝试以下查询
SELECT keys, SUM(vals) as vals
FROM yourtable
WHERE keys in ('A','C')
GROUP BY keys