Pivot – SQL – 来自SubQuery的值

前端之家收集整理的这篇文章主要介绍了Pivot – SQL – 来自SubQuery的值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这样一个简单的查询..
USE AdventureWorks;
GO

SELECT DaysToManufacture,AVG(StandardCost) AS AverageCost 
FROM Production.Product
GROUP BY DaysToManufacture; 



DaysToManufacture  AverageCost  
0                  5.0885  
1                  223.88  
2                  359.1082  
4                  949.4105

一个简单的枢轴给了我

SELECT 'AverageCost' AS Cost_Sorted_By_Production_Days,[0],[1],[2],[3],[4]  
FROM  
(SELECT DaysToManufacture,StandardCost   
    FROM Production.Product) AS SourceTable  
PIVOT  
(  
AVG(StandardCost)  
FOR DaysToManufacture IN ([0],[4]) 
) AS PivotTable;

给我

Cost_Sorted_By_Production_Days   0                     1                     2                     3                     4

AverageCost                    5.0885                223.88                359.1082              NULL                  949.4105

但是数据透视查询中的值是硬编码..我想从子查询获取这些值.

select DaysToManufacture FROM Production.Product GROUP BY DaysToManufacture;

但是pivot不允许我从子查询获取值,除了编写动态生成查询之外,有没有办法做到这一点?

解决方法

不可以.这只能使用动态查询来完成.我真的很想知道是否有办法.

快速Google search发现了一些使用COALESCE创建列列表的示例.但是我更喜欢使用STUFF创建列列表.但是我确实找到了关于使用CTE’s and dynamic pivots的这篇文章,这也可能是一种帮助

猜你在找的MsSQL相关文章