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+列分组。这就是我想问的数据透视中多列的平均值。显然,我在你们的要求中遗漏了一些东西,你们能试着澄清一下你们需要什么吗?