0
关于我的其他问题(Pivot Multiple Tables with Default Values),参考透视型游标在PL/SQL
我怎么能使用结果集的透视型的SQL在PL/SQL块? 数据集是以下:
ELEMENT_NAME ELEMENT_ENTRY_ID 1_INPUT_VALUE 1_SCREEN_ENTRY_VALUE 2_INPUT_VALUE 2_SCREEN_ENTRY_VALUE 3_INPUT_VALUE 3_SCREEN_ENTRY_VALUE 4_INPUT_VALUE 4_SCREEN_ENTRY_VALUE 5_INPUT_VALUE 5_SCREEN_ENTRY_VALUE
------------------------ ------------------- ---------------- -------------------- --------------- ----------------------- --------------- ---------------------- --------------- ----------------------- --------------- ----------------------
VERTEX 72249257 393 0 395 391 392 33-000-0000 394
ALC Workers Compensation 72249258 393 0 395 394 391 392 33-065-0000
PTO Taken Plan 72523856 392 33-065-3190 391 393 0 395 394
Regular Wages 72249260 234 9.7 236 235 233
US_TAX_VERTEX 72249259 391 394 393 100 395 392 33-065-2920
Workers Compensation 72249256 455 456 33-000-0000
我试图使用提供查询的答案在下面的块,但它的示数出来:
declare
cursor C_cur is
select *
from (With src As (SELECT lmnt.element_name
, lmnt.element_entry_id
, nval.input_value_id
, nval.screen_entry_value
, row_number() over (partition by lmnt.element_name, lmnt.element_entry_id
order by lmnt.element_name ) rn
FROM XX_SAMPLE_ELEMENTS lmnt
, XX_ENTRY_VALUES nval
, XX_ELEMENT_VALUES eval
where lmnt.element_entry_id = nval.element_entry_id
and eval.INPUT_VALUE_ID = nval.INPUT_VALUE_ID
order by lmnt.element_name)
SELECT * FROM src
PIVOT (max(input_value_id) As input_value,
min(screen_entry_value) as screen_entry_value
FOR (rn) IN (1,2,3,4,5)));
l_input_value varchar2(100);
begin
for C_rec in C_cur loop
l_input_value := C_rec.1_INPUT_VALUE;
end loop;
end;
PLS-00103:出现符号期待以下某种情况时“.1”:。 (* @%& = - +; < /> at in是多重成员子多义集06550之间的mod剩余部分不是rem <>或= =或= => = < = <>或like like2 like4 likec。行%S,列%S:\ n%S” *原因:通常一个PL/SQL编译错误 *操作:
我怎么能参考的第一个输入值1_INPUT_VALUE
您可以将该字段引用为引用标识符“1_INPUT_VALUE”。不过,我会建议别名IN列表。例如:'FOR(rn IN(1 AS N1,2 AS N2 ...')。这样做应该让你的透视列名称为N1_INPUT_VALUE,我相信它不需要加上引号。 –
@HepC,这绝对有效!请将其作为答案,以便我能够投票。 –