gpt4 book ai didi

sql - 列到行重命名 Oracle SQL

转载 作者:行者123 更新时间:2023-12-04 05:13:58 26 4
gpt4 key购买 nike

我有一张大表,如下所示:

section  term  percentageyr_1   percentageyr_2  percentageyr_3 ... percentageyr_25  
01 1 0.1 0.9 0.3 0.6
01 2 0.3 0.5 0.01 0.3
01 3 0.6 0.4 0.2 0.6
01 4 0.3 0.5 0.7 0.14
01 5 0.4 0.2 0.6 0.6
.
.
.
.
20

02 1 0.3 0.5 0.5 0.8
02 2 0.9 0.1 0 0.6
.
.
.
20

我需要创建一个看起来更像以下内容的新表:
year | section | term | percent
--------------------------------
1 01 1 0.1
2 01 1 0.9
3 01 1 0.3
. 01 1 .
20 01 1 0.6
1 01 2 0.3
2 01 2 0.5
. 01 2 0.01
. 01 2
20 01 2 0.3
...
1 01 20
2 01 20
. 01 20
. 01 20
20 01 20
1 02 1
2 02 1
. 02 1
. 02 1
. 02 1
20 02 1
etc.

我似乎有一些类似的示例使用 decode() 进行相反的转换,但我不确定列 - > 行方向以及如何更改转换中的列的名称。

我真的很感激任何帮助!

最佳答案

您的目标是您的输出还是您正在尝试转换您现有的表格?如果您的目标是上面的输出,请尝试以下操作:

SELECT r.r year, t.section, t.term
FROM LargeTable t, (
SELECT Rownum r
FROM dual
CONNECT By Rownum <= 20 ) r
ORDER BY t.section, t.term, r.r

这是 SQL Fiddle .

--编辑

根据您的编辑,您仍然可以使用以下内容(我只使用了几列,但您应该明白这一点),并添加 CASE百分比声明:
SELECT r.r year, t.section, t.term,
CASE
WHEN r.r = 1 THEN percentageyr_1
WHEN r.r = 2 THEN percentageyr_2
WHEN r.r = 25 THEN percentageyr_25
END as percent
FROM LargeTable t, (
SELECT Rownum r
FROM dual
CONNECT BY Rownum <= 25 ) r
ORDER BY t.section, t.term, r.r

这是更新的 fiddle .

祝你好运。

关于sql - 列到行重命名 Oracle SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14543001/

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