【发布时间】:2018-05-14 15:27:14
【问题描述】:
我有一个很长的这样的sqlquery,只需要更改日期就需要运行几次。我擅长 SAS,但对 R 很陌生,所以我正在努力编写类似于 SAS 的东西。
df <- sqlQuery(datamart, paste0("Select xxxxxxxxxxxxxxxxxx from xxxxx
where date = '28Feb2018'"), as.is=TRUE, stringsAsFactors = FALSE)
你能分享一些经验吗?
谢谢!
于 2018 年 6 月 5 日编辑:
我根据下面的答案编辑了代码,但我仍然无法正确运行代码。 目前我的代码变成:
safeqry <- function(date_string)
{require(RODBCext)
qry_string <- paste0("DELETE FROM [T_SPP] WHERE [BkDt]<=#?","#")
parms <- data.frame(date_string, stringsAsFactors=FALSE)
sqlExecute(access, qry_string, parms, fetch=TRUE)}
safeqry('2016-04-30')
错误是:
42000 -3100 [Microsoft][ODBC Microsoft Access Driver] 查询表达式“[BkDt]
另一个代码是
query_delete = function (table, date_col, date) {
paste0('DELETE FROM [',table,'] WHERE [',date_col,']<=#',date, '#')}
sqlQuery(access, query_delete("T_SPP", "BkDt", "2018-04-30"),as.is = TRUE, stringsAsFactors = FALSE)
错误是
[1]“[RODBC] 错误:无法 SQLExecDirect 'DELETE FROM [T_SPP] WHERE [BkDt]
【问题讨论】:
-
您可以使用 for 循环。
for (date in dates) {...}然后使用paste0将date粘贴到您的SQL 中。 -
C_Mu,其中一个答案能解决您的问题吗?
-
C_Mu,您是否有理由忽略这些答案?如果他们不能解决您的问题,我建议您说明他们为什么不起作用(足够)。如果至少有一个就够了,请accept the preferred answer。
-
我终于弄清楚了如何去做,这些答案给了我很多提示,这是最终的代码作品。谢谢大家在这里帮助我。
-
query_string = function(table, date_col_name, date) { x=paste0('Delete From ', table, ' Where ', date_col_name, "