当前位置: 首页 > 面试题库 >

枢轴-SQL-子查询中的值

景鹏飞
2023-03-14
问题内容

我有一个简单的查询,像这样。

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], [1], [2], [3], [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不允许我从子查询中获取值,除了编写动态生成的查询之外,还有其他方法可以执行此操作吗?


问题答案:

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



 类似资料:
  • 问题内容: 如何执行枢纽功能 我有一张有数据的表 但我需要的格式为 这样。 如何执行数据透视功能以这种格式获取。 请帮帮我........ 我用过我的查询 结果显示为 但在这里我也有3个星期一的记录,而不是一个星期一的记录… 如何获得每天1天的一个记录…? 问题答案: 试试这个: PIVOT运算符未“消耗”的任何列将保留在最终结果集中,从而增加了基数。

  • 问题内容: 好吧,我有一张看起来像这样的表 现在,我需要将其转换为: 我一直在看动态透视图示例,但是我似乎无法使其适合我的情况。 有人可以帮忙吗? 问题答案: 看下面的例子

  • 问题内容: 示例选择: 输出: 是否可以按时间顺序对记录进行排序,排除列“月”和“年”?没有列出所有列。 UPD 需要: 就像是: 问题答案: 要对记录进行排序,可以将以下内容添加到sql的末尾 注意:枢轴列名称区分大小写,因此需要用引号引起来 这是完整的查询,仅选择您需要的列:

  • 本文向大家介绍SQL中的子查询,包括了SQL中的子查询的使用技巧和注意事项,需要的朋友参考一下 子查询是查询内的查询,即嵌套查询。它放置在查询中,其结果用于进一步评估外部查询。 在SQL中,子查询必须遵循一些规则。其中一些是- 子查询应放在括号内。 子查询可以与不同的运算符(如<,>,<=,> =,IN,BETWEEN等)一起使用。还可以使用SELECT,INSERT,DELETE,UPDATE等

  • 问题内容: 我有这个查询 有什么方法可以替换 为(空字符串)吗?( 无需 修改CTE数据!) 问题答案: 使用: 输出:

  • 问题内容: 为了报告目的,我需要透视每个记录上唯一的查询结果。我当前的声明是: 查询输出的示例是: 最终,信息需要看起来像这样: 我在想我需要为“ pivot_id”添加一列,以便每个分组都有一个共同的记录,因此在数据透视之前的查询结果将如下所示: 哪种SQL语句将为每次购买生成一个自动记录号,而且还会从每个customer_name重新开始? 使用SQL代码生成器在Access 2007中工作。