gpt4 book ai didi

sql - 带计数的数据透视表 - Oracle SQL

转载 作者:行者123 更新时间:2023-12-04 21:29:55 25 4
gpt4 key购买 nike

我有这张 table :

表格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>


Here是我为回答您的问题而创建的 SQL Fiddle 查询的链接。

希望这会为您指明正确的方向:)

关于sql - 带计数的数据透视表 - Oracle SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56046021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com