Hi, Good Afternoon.
Oracle Environment Is Oracle 12c
I am stuck at coming up with a Logic, where I have to Create Dynamic Table, with Dynamic Columns names and The table name is from a Query data field.I Tried with Pivot Query but with no luck,
I keep getting "ORA-56901: non-constant expression is not allowed for pivot|unpivot values"
I am Copy pasting my query which involves XMLDB and XQUERY, I am using the result Set of the XML Query result in to my Pivot Query, but I am not Able to get the required result.
SELECT * FROM (
SELECT 1 AS study_id
, sd.*
, 1 AS print_id
, current_Timestamp AS crtd_dt
, current_timestamp AS updt_dt
, 'robot_user' AS crtd_by
, 'robot_user' AS updtd_dt
FROM odm_file odf,
XMLTABLE(XMLNAMESPACES (DEFAULT 'http://www.cdisc.org/ns/odm/v1.3')
, 'for $h in /ODM/ClinicalData
,$i in $h/SubjectData/StudyEventData/FormData
,$j in $h/$i/ItemGroupData
,$k in $h/$i/$j/ItemData
return element r {$h,$i,$j,$k}'
PASSING odf.xml
COLUMNS STDY_NM VARCHAR2(30) PATH 'ClinicalData/@StudyOID'
--,VISIT_RPT_KEY VARCHAR2(20)
,FRM_OID VARCHAR2(30) PATH 'FormData/@FormOID'
,FRM_RPT_KEY VARCHAR2(30) PATH 'FormData/@FormRepeatKey'
,ITM_GRP_OID VARCHAR2(30) PATH 'ItemGroupData/@ItemGroupOID'
,ITM_GRP_RPT_KEY VARCHAR2(30) PATH 'ItemGroupData/@ItemRepeatKey'
,ITM_OID VARCHAR2(30) PATH 'ItemData/@ItemOID'
,ITM_VAL VARCHAR2(30) PATH 'ItemData/@Value'
,IS_ITM_NULL VARCHAR2(30) PATH 'ItemData/@IsNull'
,TRNSCTN_TYP VARCHAR2(30) PATH 'ItemData/@TransactionType'
)sd
WHERE odf.odm_file_id = 2
)
--SELECT * FROM PIVOT_DATA
PIVOT( COUNT(ITM_GRP_OID)
FOR ITM_GRP_OID
IN(ITM_OID,OTM_VAL)
);
I am Copy pasting the result Data of the inner query, the query starts from the Bold parenthesis and italicized
| Seq_ID | Analysis_NM | FORM_ID | F_Repeat Key | Item_group_ID | Item_group_Repeat_key | Item_ID | Item Value | Item is Null | Transaction Mode | Print_id | CRTD_DT | UPDT_DT | CRTD_BY | UPDTD_DT |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2000 | | HDFSPERF | Y | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2000 | | HDFSREASND | RESULT NOT MISSING | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS0201 | 2 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS0202 | 2 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS0203 | 3 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS0204 | 4 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS0205 | 1 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS01P6 | 3 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS01P7 | 3 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFS0206 | 76 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFSSTGDAT | 2014-02-04 | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | IG.HDFS2001 | | HDFSSTGMTHD | MACHINE LANG COMPUTER ADMIN | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | HDFS2001_REPAIR | | QUESTLANG | ENGLISH | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | HDFS2001_REPAIR | | QUESTCAT | REPAIR | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | HDFS2001_REPAIR | | HDFSLEVAL | STUDY ANALYST | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | HDFS2001_REPAIR | | QUESTEVINTX | SINCE THE LAST TIME | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | HDFS2001_REPAIR | | QUESTTPT | DAILY | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
| 1 | K-Means Distro | HFR6HDFS | | HDFS_2001_DERIVATION | | QUESTSPID | COSINE/SINE | | | 1 | 1/1/1990 | 1/1/1990 | Robot_user | Robot_user |
My Mockup Data Should look like
THe Form Name from the Result set becomes the Table Name that has to be Created, here HFR6HDFS
| Table Name: HFR6HDFS | | | | | | | | | | | | | | | | | | | | |
| Analysis_NM | Print_id | Item Group ( is an Alias) | HDFSPERF | HDFSREASND | HDFS0201 | HDFS0202 | HDFS0203 | HDFS0204 | HDFS0205 | HDFS01P6 | HDFS01P7 | HDFS0206 | HDFSSTGDAT | HDFSSTGMTHD | QUESTLANG | QUESTCAT | HDFSLEVAL | QUESTEVINTX | QUESTTPT | QUESTSPID |
| 1 | K-Means Distro | 1 | IG.HDFS2000 | Y | RESULT NOT MISSING | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null |
| 1 | K-Means Distro | 1 | IG.HDFS2001 | Null | Null | 2 | 2 | 3 | 4 | 1 | 3 | 3 | 76 | 2014-02-04 | MACHINE LANG COMPUTER ADMIN | Null | Null | Null | Null | Null | Null |
| 1 | K-Means Distro | 1 | IG.HDFS2000_REPAIR | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | | ENGLISH | REPAIR | STUDY ANALYST | SINCE THE LAST TIME | DAILY | Null |
| 1 | K-Means Distro | 1 | HDFS_2001_DERIVATION | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | Null | COSINE/SINE |