用例在sql中添加不同的值

时间:2014-01-03 18:16:16

标签: sql sql-server-2008

有一个名为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

1 个答案:

答案 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 |