将Pivot与子查询一起使用时,列的定义不明确

时间:2018-10-31 12:41:08

标签: sql oracle oracle11g pivot

我正在尝试运行此数据透视查询以将日期显示为以下格式的列:“ 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关键字,因为它提示:缺少关键字

当前表格:Current table

预期结果:Expected Result

1 个答案:

答案 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导致列名与日期格式掩码相同,从而缩短了时间信息。