我有一张桌子,看起来像
Test Reader Result
1 John 1.6
1 Jack 5.2
2 Ursula 2.5
3 Albert 3.0
2 Jack 5.1
而且我知道每个测试最多可以有3个,Readers
所以我想创建一个看起来像
Test Reader_1 Result_1 Reader_2 Result_2 Reader_3 Result_3
1 John 1.6 Jack 5.2 (null) (null)
2 Ursula 2.5 Jack 5.1 (null) (null)
3 Albert 3.0 (null) (null) (null) (null)
我环顾四周,似乎需要使用PIVOT表。唯一的问题是,我找到了使用序数变量创建列的示例。在这种情况下,我具有预定义数量的可能列(3)。有任何想法吗?
不需要多个自联接的解决方案:
您可以PIVOT
根据ROW_NUMBER()
分析函数的结果获取所需的输出:
SELECT *
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY test ORDER BY ROWNUM ) AS rn
FROM your_table t
)
PIVOT ( MAX( Reader ) AS reader, MAX( result ) AS result FOR rn IN ( 1, 2, 3 ) );
输出 :
TEST 1_READER 1_RESULT 2_READER 2_RESULT 3_READER 3_RESULT
---- -------- -------- -------- -------- -------- --------
1 John 1.6 Jack 5.2
2 Ursula 2.5 Jack 5.1
3 Albert 3.0
或者,仅使用聚合函数:
SELECT test,
MAX( CASE rn WHEN 1 THEN reader END ) AS reader_1,
MAX( CASE rn WHEN 1 THEN result END ) AS result_1,
MAX( CASE rn WHEN 2 THEN reader END ) AS reader_2,
MAX( CASE rn WHEN 2 THEN result END ) AS result_2,
MAX( CASE rn WHEN 3 THEN reader END ) AS reader_3,
MAX( CASE rn WHEN 3 THEN result END ) AS result_3
FROM (
SELECT t.*,
ROW_NUMBER() OVER ( PARTITION BY test ORDER BY ROWNUM ) AS rn
FROM your_table t
)
GROUP BY test;
问题内容: 我有一个产生以下结果集的视图: 我需要将其转换为: 我只使用交叉表使用列,就知道该怎么做。如何在目标结果集中使用和产生新列?如果我只是在查询中添加列,它会抱怨“无效的源数据SQL语句”。 我正在使用PostgreSQL 9.3.6。 问题答案: 一种方法是使用复合类型: 或者,为临时使用(在会话期间注册类型): 然后,根据需要运行交叉表并分解复合类型: 所有括号都是 必需的 ! 基础知
问题内容: 我写了这个查询: 返回结果: 这正是我想要的结果。我的问题是,“援助”中不会总是有四个不同的值。是否可以重写此查询(或使用存储过程),以使“ a *”列的数量取决于“援助”中有多少个不同的值? 问题答案: 您将需要使用“动态数据透视表”来获取所需的列列表。这将首先检索列的列表,然后旋转该列表。类似于以下内容:
问题内容: 我正在尝试编写查询以创建数据的“表”,如下所示: 这将返回类似: 现在,我希望结果是这样的(来自MySQL查询,而不是由应用程序操纵): 有两个注意事项: 日期范围可以增加或缩小(取决于查询) 在某些情况下,PercentChange可能为null(假设category_7 / 2011-05-12可能没有设置值) 所以最终我不太确定如何构建查询的选择部分以反映动态的列数(我知道它与C
A 数据透视表介绍 B.1 什么是数据透视表? 数据透视表是一种可以快速汇总、分析大量数据表格的交互式工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以查看数据表格不同层面的汇总信息、分析结果以及摘要数据。使用数据透视表可以深入分析数值数据,以帮助用户发现关键数据,并做出有关企业中关键数据的决策。 数据透视表是针对以下用途特别设计的:以友好的方式,查看大量的数据
数据透视表显示二维交集的度量值,并在表格视图中表示数据。 图表属性 选择图表类型后,可以更改其属性来自定义图表: 选项 描述 常规 背景颜色 设置图表区域的背景颜色。 不透明度 设置背景颜色的不透明度。 显示边框 显示图表外部边框。 边界颜色 设置图表外部边框的颜色。 显示标题 显示图表的主要标题。 标题 指定图表的标题。 标题字体 设置标题的字体样式。 位置 设置标题的位置。 对齐 设置标题的水
数据透视表显示二维交集的度量值,并在表格视图中表示数据。 图表属性 选择图表类型后,可以更改其属性来自定义图表: 选项 描述 常规 背景颜色 设置图表区域的背景颜色。 显示边框 显示图表外部边框。 边界颜色 设置图表外部边框的颜色。 显示标题 显示图表的主要标题。 标题 指定图表的标题。 标题字体 设置标题的字体样式。 位置 设置标题的位置。 对齐 设置标题的水平对齐方式。 数据 字体 设置字段名