[英]Using case add different values in sql
有一个名为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
假设您有一个唯一的ID,则可以尝试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
结果和小提琴演示 :
| NAME | ID | NEWPRICE |
|------|----|----------|
| A | 1 | 40 |
| B | 2 | 40 |
| C | 5 | 20 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.