如何在 EXCEL ORACLE CONNECTION 中将 2 个查询合并为一个

Posted

技术标签:

【中文标题】如何在 EXCEL ORACLE CONNECTION 中将 2 个查询合并为一个【英文标题】:how to join 2 query into one in EXCEL ORACLE CONNECTION 【发布时间】:2013-11-15 18:42:19 【问题描述】:

我有 2 个查询。 我正在尝试加入他们,所以我只是从一个中编写导出,而不是在 excel 中手动加入它们。

(SELECT 
        b.OUT_NO, 
        a.ACCNO, 
        a.BILL_ACCNO, 
        a.NAME, 
        a.HOUSE_NO, 
        a.STREET, 
        a.HOUSE_NO2, 
        a.ZIP, 
        a.ID, 
        b.TIME_STAMP, 
        b.REST_DATE, 
        c.RESTORED_TIME, 
        b.OUT_CMNT
   FROM ***.account a, 
        ***.problem b, 
        ***.history c
  WHERE c.OUT_NO = b.OUT_NO 
    AND a.ID = c.ID 
    AND (  (a.NAME Is Not Null) 
       AND (a.DISC Is Null) 
       AND (b.TIME_STAMP>?) 
       AND (c.RESTORED_TIME<?))
)

(SELECT 
       b.OUT_NO, 
       a.ACCNO, 
       a.BILL_ACCNO, 
       a.NAME, 
       a.HOUSE_NO, 
       a.STREET, 
       a.HOUSE_NO2, 
       a.ZIP, 
       a.ID, 
       b.TIME_STAMP, 
       b.REST_DATE, 
       c.RESTORED_TIME, 
       b.OUT_CMNT
  FROM ***.account a, 
       ***.problem b, 
       ***.history c
 WHERE c.OUTAGE_NO = b.OUTAGE_NO 
   AND a.ID = c.ID 
   AND (   (a.NAME Is Not Null) 
       AND (a.DISC Is Null) 
       AND (b.TIME_STAMP > ? And b.TIME_STAMP < ?) 
       AND (c.RESTORED_TIME > ? And c.RESTORED_TIME < ?)
       )
)

我怎样才能加入这两个?进入 1,我尝试了UNION ALL,但我得到了ora-01847 day of month must be between 1 and last day of month 错误。

? 是参数,它链接到电子表格上的单元格。 excel数据参数的格式。 11/04/2013 00:00:00

谢谢

【问题讨论】:

【参考方案1】:

错误与日期格式有关,与联合无关。 如果您将单元格值作为字符串参数传递,Oracle 会尝试将其转换为日期,以便与表列中的 datetimestamp 值列进行比较。要进行此转换,Oracle 使用它的内部默认值 date representation format,而在您的情况下不是 mm/dd/yyyy hh24:mi:ss

解决问题有两种可能性:

    使用date 类型传递参数以查询并将值转换为日期,然后再将其传递给Oracle。检查examples on MSDN 和CreateParameter 和Parameters.Append 方法的描述。

    使用to_date Oracle 函数将查询中的值转换为日期。

更改查询条件
   AND (b.TIME_STAMP>?) 
   AND (c.RESTORED_TIME<?))

   AND (b.TIME_STAMP > ? And b.TIME_STAMP < ?) 
   AND (c.RESTORED_TIME > ? And c.RESTORED_TIME < ?)

   AND (b.TIME_STAMP > to_date(?,'mm/dd/yyyy hh24:mi:ss') ) 
   AND (c.RESTORED_TIME < to_date(?,'mm/dd/yyyy hh24:mi:ss') ))

   AND (
        b.TIME_STAMP > to_date(?,'mm/dd/yyyy hh24:mi:ss') 
        And 
        b.TIME_STAMP < to_date(?,'mm/dd/yyyy hh24:mi:ss')
       ) 
   AND (
        c.RESTORED_TIME > to_date(?,'mm/dd/yyyy hh24:mi:ss') 
        And 
        c.RESTORED_TIME < to_date(?,'mm/dd/yyyy hh24:mi:ss')
       )

【讨论】:

以上是关于如何在 EXCEL ORACLE CONNECTION 中将 2 个查询合并为一个的主要内容,如果未能解决你的问题,请参考以下文章

如何将excel数据导入到数据库oracle11g

如何把excel中的数据导入到oracle数据已有的表中,excel中的数据和表中的数据字段都是对应的

如何像 EXCEL 一样在 Oracle 中对带有“_”的文本进行排序?

如何从 oracle 报告应用程序 ERP 生成 excel 文件?

如何在 Oracle PLSQL 中以“文本”格式保存 excel 文件?

如何将 SQL 结果生成到 Excel 工作表 (Oracle)