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,這絕對有效!請將其作爲答案,以便我能夠投票。 –