在Oracle SQL Query - VBA中加入(INNER JOIN)本地Excel表

时间:2016-09-29 23:31:05

标签: sql excel oracle vba

我无法通过Excel VBA 在远程Oracle SQL Server上执行查询时尝试使用Excel文件表中的本地表在同一查询中执行INNER JOIN 即可。 例如:

  • 包含本地表["LTE_Cells$LTE_Cells_Tmp"]的Excel表格:

Sheet "LTE_Cells"

Oracle SQL查询

SELECT  a.STARTDATE, a.ENODEB, a.EUTRANCELLFDD, (a.COUNTER_1/8/1024)+
a.COUNTER2/8/1024) AS Total_Total_Traffic_TB FROM »»»LOCAL_EXCEL_TABLE«««« 
INNER JOIN REMOTE_DATABASE.LTE_KPI_1 a ON  
((»»»LOCAL_EXCEL_TABLE««««.EUTRANCELLFDD = 
REMOTE_DATABASE.LTE_KPI_1.EUTRANCELLFDD) AND  
(»»»LOCAL_EXCEL_TABLE««««.ENODEB = REMOTE_DATABASE.LTE_KPI_1.ENODEB)) WHERE 
(((REMOTE_DATABASE.LTE_KPI_1.STARTDATE)>=sysdate-3));`

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这并没有直接回答你的问题,而且我可能对此感到茫然,但我不知道Excel或Oracle是否明确处理了你想要完成的任务。

但是,MS Access将开箱即用。简短回答:我认为您使用错误的工具完成此任务。你正在使用众所周知的锤子将一块板子看成一半。将电子表格和Oracle表链接为Excel中的链接对象,您的查询应该很容易实现。

更长的答案:虽然Access可以简单轻松地执行此操作,但它可能并且可能会在DBMS上留下破坏的路径。具体来说,您可以期望在Oracle中破坏共享池,因为Access将为Excel中的每一行发出一个查询(使用文字,不能少)。对于1,000行,它可能并不重要,但如果您要在非常大的数据集上执行此操作,您将从DBA中成为一个快速的敌人。

扩展答案:实际上,最好的方法是在Oracle表格中加载这些Excel电子表格的内容,让DBMS完成繁重的工作。这是RDBMS的面包和黄油。