Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用PIVOT获得两列的平均值?_Sql_Sql Server_Sql Server 2008_Pivot Table - Fatal编程技术网

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

Sql 如何使用PIVOT获得两列的平均值?,sql,sql-server,sql-server-2008,pivot-table,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

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

 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
结果应该是 金额(价格*数量)/金额(数量)为相同尺寸的平均值

HeaderID     Average-50     Average-60 
  1                 9            4.7  
价格是上表中每1个数量*的价格,我想使用PIVOTE获得大小为“50”的平均价格

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;

如果要透视结果,则可以使用类似的方法:

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

您希望最终结果如何显示?我希望大小值应为列以及价格和数量的平均值。因为在我的表中可以使用相同大小但价格和数量不同,所以我希望获得每个大小的平均价格。请编辑您的原始帖子并显示您希望最终结果的外观。为什么必须使用PIVOT?100多码?标准化结果将以行而不是列的形式显示。如果我选择10+列,我需要按10+列分组。这就是我想问的数据透视中多列的平均值。显然,我在你们的要求中遗漏了一些东西,你们能试着澄清一下你们需要什么吗?