[英]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.