如何使用PIVOT从两列获得平均值?

时间:2012-11-19 11:05:42

标签: sql sql-server sql-server-2008 pivot-table

在我的表中,我想获得两列的平均值

 PackerID    HeaderID    Price  Quantity  Size  
  1            1           10      10      50  
  2            1           10      10      60  
  3            1           8.5     20      50
  4            2           7       15      60
  5            2           6       30      60

结果应该是    SUM(价格*数量)/ SUM(数量)为相同尺寸的平均值。

HeaderID     Average-50     Average-60 
  1                 9            4.7  

价格是从上表中的每1个数量*,我希望使用PIVOTE获得尺寸'50'的平均价格。

2 个答案:

答案 0 :(得分:1)

如果你想PIVOT结果,那么你可以使用类似的东西:

select *
from
(
  select headerid, size,
    sum(price*quantity)/sum(quantity*1.0) perUnit
  from yourtable
  group by headerid, size
) src
pivot
(
  avg(perUnit)
  for size in ([50], [60])
) piv

答案 1 :(得分:0)

select sum(price * quantity) / sum(quantity)
  from tbl
 where size = 50;

-- result
9.0

适用于所有尺码:

  select size, sum(price * quantity) / sum(quantity) avg_price_for_size
    from tbl
group by size
order by size;