我有这张桌子:
表格1
id e_nm val count
2572 Fruit Date 20180115 13
2572 Fruit Date 20180504 21
2573 Salad Date ABC 50
2574 Test Date 20181115 14
2574 Test Date 19991001 29
该表具有每个e_nm(元素名称)及其计数的所有不同值。该表具有数千个可用值,其中包含500多个元素名称。
有没有一种方法可以像使用Pivot那样将其可视化:
id_2572 id_2572_e_nm id_2573 id_2573_e_nm id_2574 id_2574_e_nm
20180115 Fruit Date ABC Salad Date 20181115 Test Date
20180504 Fruit Date 19991001 Test Date
请注意,表列需要通过从table1读取id来动态生成。
尽管不完全像您想象的那样,但我想出了一个解决方案。基本上,您将需要在源表中创建一个名为唯一ID的新列。这是您将要旋转表的唯一标识符。
之后,您将需要使用以下查询来获取几乎所需的输出:
SELECT * FROM
(
SELECT
unique_id,
e_nm,
val
FROM table1
)
PIVOT
(
listagg(val) within group (order by null) as id, listagg(e_nm) within group (order by null) as id_e_nm
FOR e_nm IN ('Fruit Date','Salad Date','Test Date')
)
这将为您提供以下输出:
body {
margin: 0;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
font-size: 14px;
line-height: 20px;
color: #333;
background-color: #fff;
}
<table class="results table table-bordered table-striped">
<tbody>
<tr>
<th>UNIQUE_ID</th>
<th>'Fruit Date'_ID</th>
<th>'Fruit Date'_ID_E_NM</th>
<th>'Salad Date'_ID</th>
<th>'Salad Date'_ID_E_NM</th>
<th>'Test Date'_ID</th>
<th>'Test Date'_ID_E_NM</th>
</tr>
<tr>
<td>1</td>
<td>20180115</td>
<td>Fruit Date</td>
<td>ABC</td>
<td>Salad Date</td>
<td>20181115</td>
<td>Test Date</td>
</tr>
<tr>
<td>2</td>
<td>20180504</td>
<td>Fruit Date</td>
<td>(null)</td>
<td>(null)</td>
<td>19991001</td>
<td>Test Date</td>
</tr>
</tbody>
</table>
这是我为回答您的问题而创建的SQL Fiddle查询的链接。
希望这能为您指明正确的方向:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句