有一个名为Product的表,其中包含三列name,id and price
。
在下面的查询我想做的事情如果存在id 1,2和3然后它添加id 1.id 2和id 3的价格或如果只存在id 1和2然后它只添加id 1和id 2的价格
select
name,
id,
case
when id in(1,2,3) then sum(price) as total
else ' '
end
case
when id in(4,5,6) then sum (price) as total
else ' '
end
from
Product
group by
name,
id;
但它不能正常工作。
示例数据:
Name ID PRICE
A 1 30
B 2 10
C 5 20
预期产出:
NAME ID TOTAL
A 1 40
B 2 40
C 5 20
答案 0 :(得分:0)
假设您有唯一标识,则可以尝试Sum() Over()
:
Select Name, Id,
Sum(Price) Over (partition by (case when id in (1,2,3) then 1 else id end)) NewPrice
From Table1
结果和 Fiddle demo :
| NAME | ID | NEWPRICE |
|------|----|----------|
| A | 1 | 40 |
| B | 2 | 40 |
| C | 5 | 20 |