Просто избегайте двойных кавычек вокруг псевдонимов столбцов, поскольку вы используете двойные кавычки для R-строки.Oracle выдает ошибку для пробела между ID узла .
res <- dbSendQuery(con, "SELECT OP.FIELD_1 AS \"Trade Date\",
L.FIELD_2 AS \"Node ID\"
FROM TABLE_1 OP,
TABLE_2 L
WHERE OP.FIELD_1 = '12-JAN-2019'")
В качестве альтернативы, оберните строку R в одинарные кавычки и экранируйте одинарные кавычки в WHERE
:
res <- dbSendQuery(con, 'SELECT OP.FIELD_1 AS "Trade Date",
L.FIELD_2 AS "Node ID"
FROM TABLE_1 OP,
TABLE_2 L
WHERE OP.FIELD_1 = \'12-JAN-2019\'')
Более того, просто избегайте пробелов в псевдонимах столбцов, требующих использования двойных кавычек в Oracle:
res <- dbSendQuery(con, "SELECT OP.FIELD_1 AS Trade_Date,
L.FIELD_2 AS Node_ID
FROM TABLE_1 OP,
TABLE_2 L
WHERE OP.FIELD_1 = '12-JAN-2019'")
Даже лучше параметризация ваш запрос с DBI::sqlInterpolate
и избегайте любых кавычек.Ниже также используется CROSS JOIN
более явная, предпочтительная версия, чем таблицы, разделенные запятыми:
library(ROracle)
library(DBI)
...
sql <- sqlInterpolate(con, "SELECT OP.FIELD_1 AS Trade_Date,
L.FIELD_2 AS Node_ID
FROM TABLE_1 OP
CROSS JOIN TABLE_2 L
WHERE OP.FIELD_1 = ?param",
param = "12-JAN-2019")
res <- dbGetQuery(con, sql)