繁体   English   中英

用例在SQL中添加不同的值

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM