Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中循环许多SQL查询?_Sql_Sql Server_R_Loops - Fatal编程技术网

如何在R中循环许多SQL查询?

如何在R中循环许多SQL查询?,sql,sql-server,r,loops,Sql,Sql Server,R,Loops,我正在使用R Studio,使用RODBC包访问SQL Server 2012,我将运行以下SQL查询: NameJan15 <- sqlQuery(connection_name, paste("SELECT column_1, column_2 FROM DBname.dbo.tablename Where column_cd= 'ZZZ' and column_date

我正在使用R Studio,使用RODBC包访问SQL Server 2012,我将运行以下SQL查询:

NameJan15 <- sqlQuery(connection_name, paste("SELECT column_1,
                   column_2 FROM DBname.dbo.tablename
                   Where column_cd= 'ZZZ' 
                   and column_date between '20150101' and '20150131'
                   AND org_cd= '##########'
                   ORDER BY column_2, column_1 desc;"
                   ))
NameJan15怎么样

library(lubridate)
begin <- (ymd("2014-01-01") + days(1))  %m+% months(0:23) + days(-1) 
end <- (ymd("2014-01-31") + days(1))  %m+% months(0:23) + days(-1) 
queries <- paste("SELECT column_1,
                   column_2 FROM DBname.dbo.tablename
                 Where column_cd= 'ZZZ' 
                 and column_date between '", begin, "' and '", end, "
                 AND org_cd= '##########'
                 ORDER BY column_2, column_1 desc;")
res <- lapply(queries, FUN=function(x) sqlQuery(connection_name, x))
库(lubridate)

开始为什么不运行一个查询,返回所有72个案例所需的数据,然后再进行数据拆分?运行单独的查询需要大量额外的开销。我同意@Alex的观点。事实上,您不需要运行迭代查询所需的任何聚合。现在,如果df是一个非常大的批量负载,那么重复查询可能是有保证的。否则,只需在R中切片大DF,也可以考虑使用月份。SQL Server使用
DatePart()
Month()
函数。您将避免在2月31日声明不存在@Alex我将首先运行大查询,然后像您所说的那样尝试将其拆分。@Parfait日期的格式为(char(8),null)。如果我碰巧在搜索中包含20150231,它会不会在2月28/29日之前返回所有内容?请注意,使用此解决方案,
res
将生成数据帧列表。
library(lubridate)
begin <- (ymd("2014-01-01") + days(1))  %m+% months(0:23) + days(-1) 
end <- (ymd("2014-01-31") + days(1))  %m+% months(0:23) + days(-1) 
queries <- paste("SELECT column_1,
                   column_2 FROM DBname.dbo.tablename
                 Where column_cd= 'ZZZ' 
                 and column_date between '", begin, "' and '", end, "
                 AND org_cd= '##########'
                 ORDER BY column_2, column_1 desc;")
res <- lapply(queries, FUN=function(x) sqlQuery(connection_name, x))