将Oracle Pivot表提取到CSV文件

时间:2017-02-01 15:23:07

标签: sql oracle plsql

我在Oracle中创建了一个数据透视表,以便从相当大的复杂表中提取数据,尝试使用数据与某些字母合并

理想情况下,我需要做的是然后将数据导出到CSV文件,以便传输到我们这里的混合邮件解决方案。

我正在努力解决在这种情况下导出到CSV文件的方法的问题,因为有些列是作为透视过程的一部分创建的。

我还想过创建一个临时表,使用“创建全局临时表作为select * from - 然后查询数据透视表。但是尝试这个,然后尝试从枢轴创建的表中选择导致另一个复杂因素,因为我无法查询动态创建的列,因为它被“单引号”包围。

感激收到任何意见/评论建议

创建PIVOT表的查询如下所示

select *
from 
(
select
BAA_QSA_ID ,
BAA_ASM_ID ,
BAA_SUBJECT_ID ,
PER_FIRST_NAMES ||' '|| per_surname as per_name,
case 
  when BAA_QST_DESC = 'Name of Person or Organisation of contact and their contact details' then 'PER_ORG_OF_CONTACT' else BAA_QST_CODE end as BAA_QST_CODE,
case 
  when BAA_QST_TYPE = 'QUE' then BAA_QUE_VALUE 
  when BAA_QST_TYPE = 'RVA' then (select RVA_DESC from o_Ref_values where BAA_RVA_VALUE = RVA_CODE and RVA_DOMAIN = 'CONTACT_OUTCOME')
end as answer
from 
BO_ASSESSMENT_ANSWERS left join o_persons on BAA_SUBJECT_ID = PER_ID 
where
BAA_QSA_ID='A1457'
to_date(BAA_ASM_END_DATE,'DD/MM/YYYY') = to_Date(SYSDATE,'DD/MM/YYYY')
and 
(BAA_QST_CODE = 'CONTACT_OUTCOME' or BAA_QST_DESC = 'Name of Person or Organisation of contact and their contact details')
order by 3
) 
PIVOT
(
MAX(ANSWER) 
for BAA_QST_CODE in ('CONTACT_OUTCOME','PER_ORG_OF_CONTACT')
)

从它出来的表看起来很正常,除了最后两列,从枢轴创建的列具有由单引号包围的名称,如创建列的SQL中所示

1 个答案:

答案 0 :(得分:0)

我认为实际上我现在可以根据我昨晚关闭之前看到的帖子来解决这个问题。

能够查询临时表的问题是基于我在数据透视表中错误地创建列的事实

Pivot应该阅读 枢 ( MAX(ANSWER) 对于BAA_QST_CODE('CONTACT_OUTCOME'为CONTACT_OUTCOME,'PER_ORG_OF_CONTACT'为PER_ORG_OF_CONTACT) )

然后列名称变得可查询,我认为/希望我能够从临时表中提取到CSV文件