加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

Pivot – SQL – 来自SubQuery的值

发布时间:2020-12-12 06:38:18 所属栏目:MsSql教程 来源:网络整理
导读:我有这样一个简单的查询.. USE AdventureWorks;GOSELECT DaysToManufacture,AVG(StandardCost) AS AverageCost FROM Production.ProductGROUP BY DaysToManufacture; DaysToManufacture AverageCost 0 5.0885 1 223.88 2 359.1082 4 949.4105 一个简单的枢轴
我有这样一个简单的查询..
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的这篇文章,这也可能是一种帮助

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读