我正在尝试运行此数据透视查询以将日期显示为以下格式的列:“ MM / DD / YYYY”以及每个日期中出现的某种ID:
包含日期的列为“ DATE_POSTED”-数据类型日期 包含ID的列是“ ID_INST”-数据类型varchar2
查询:
SELECT *
FROM (SELECT ID_INST, DATE_POSTED
FROM total.table1) PIVOT XML (COUNT (DATE_POSTED)
FOR (DATE_POSTED)
IN (SELECT distinct DATE_POSTED
FROM total.table1));
我收到的错误是ORA-00918:列定义不明确,我进行了一些搜索,但我不断收到此错误。不知道我的方法是否完全正确。 P.S im使用XML关键字,因为它提示:缺少关键字
答案 0 :(得分:1)
尝试以下操作:
SELECT *
FROM (SELECT ID_INST, TO_CHAR(DATE_POSTED, 'DD-Mon') DATE_POSTED
FROM TOTAL.TABLE1)
PIVOT XML (COUNT(DATE_POSTED)
FOR DATE_POSTED IN (ANY))
问题可能是由于以下事实造成的:该日期还存储该日期以外的时间信息。
因此,DATE_POSTED
的值不同,但是转换为char导致列名与日期格式掩码相同,从而缩短了时间信息。