如何在 Oracle PLSQL 中透视表?
我有一个表格如下:
KEY 1995 1996 1997 1998 1999 2000 2001 2002 2003
123 0 0 0 461 1188 2049 1056 377 295
我希望数据如下所示.
KEY SEQ_NBR SEQ_YR VALUE_SUM
123 1 1995 0
123 2 1996 0
123 3 1997 0
123 4 1998 461
123 5 1999 1188
123 6 2000 2049
123 7 2001 1056
123 8 2002 377
123 9 2003 295
我使用的是 Oracle 12c.我尝试使用 Pivot 子句,但无法创建查询.
I am using Oracle 12c. I tried using Pivot clause but couldn't create the query.
有人可以帮我吗?
推荐答案
为了好玩:我用 PL/SQL 循环和动态 SQL 填充旧表中的新表.这不是我们经常做的事情,但为什么不为一次性任务做呢?
For the fun of it: I am filling the new table from the old one with a PL/SQL loop and dynamic SQL. This is nothing we would regularly do, but why not do it for a one-time task?
begin
for col in
(
select column_name
from user_tab_cols
where table_name = 'OLDTABLE' and regexp_like(column_name, '^[[:digit:]]{4}$')
) loop
execute immediate
'insert into newtable (key, year, value)
select key, ' || col.column_name || ', "' || col.column_name || '" from oldtable';
end loop;
commit;
end;
相关文章