在输入表中,键和值是列名。下面是输入表,我想在这个o / p格式下面的表,但数据不是
来...当我们可以%
方括号中的符号而不使用时
在查询中显示数据然后显示数据。但我在枢轴中使用相同的数据
它显示空白。帮助我如何使用%
符号和类似运算符
在透视查询中提前感谢。
输入表:
key value
-------------------
sal[0] 2000
sal[1] 3000
sal[2] 1000
emp[0] 10
emp[1] 20
emp[2] 30
ename[0] rag
ename[1] swa
ename[2] yag
输出格式:
emp ename sal
----------------
10 rag 2000
20 swa 3000
30 yag 1000
我的查询是:
SELECT *
FROM INPUT
PIVOT (
MAX (VALUE) FOR KEY IN ('EMP[%]' AS EMP,
'ENAME[%]' AS ENAME,
'SAL[%]' AS SAL
)
);
答案 0 :(得分:0)
IN
子句的PIVOT
子句中列出的值应该是常量值
枢轴列。虽然LIKE
条件中的百分号符号被认为是
通配符,在IN
子句的PIVOT
子句中,它只是一个文字。
作为选项之一,我们可以摆脱那些方括号(除非它们携带 一些特殊的值)使用regexp_substr()正则表达式函数,然后执行数据透视:
SQL> with t1(key1, value1) as(
2 select 'sal[0]' , '2000' from dual union all
3 select 'sal[1]' , '3000' from dual union all
4 select 'sal[2]' , '1000' from dual union all
5 select 'emp[0]' , '10' from dual union all
6 select 'emp[1]' , '20' from dual union all
7 select 'emp[2]' , '30' from dual union all
8 select 'ename[0]', 'rag' from dual union all
9 select 'ename[1]', 'swa' from dual union all
10 select 'ename[2]', 'yag' from dual
11 )
12 select emp
13 , sal
14 , ename
15 from ( select regexp_substr(key1, '^[[:alpha:]]+') as key1
16 , value1
17 , row_number() over(partition by regexp_substr(key1, '^[[:alpha:]]+') order by value1)
18 from t1
19 )
20 pivot(
21 max(value1) for key1 in ('emp' as emp, 'sal' as sal, 'ename' as ename)
22 )
23 ;
结果:
EMP SAL ENAME
---- ---- -----
10 1000 rag
20 2000 swa
30 3000 yag