Я пытаюсь извлечь фрейм данных из результатов запроса SQL. Я использую RODB C для этого из-за проблем совместимости между ПК при использовании odb c и DBI. Соединение указывается так:
my_server="servername"
my_db = "databasename"
connect_rodbc <- RODBC::odbcDriverConnect(paste0("DRIVER={SQL Server};
server=",my_server,";
database=",my_db,";trusted_connection=true"))
Все запросы в моем скрипте, кроме одного, работают нормально, но тот, который вчера работал нормально и работает в SQL Server Management Studio теперь возвращает пустой вектор вместо желаемого фрейма данных, и я не знаю, почему.
Запрос имеет формат:
dataset_needed <- RODBC::sqlQuery(connect_rodbc, "
IF OBJECT_ID ('tempdb..#Date') IS NOT NULL
DROP TABLE #Date
SELECT DISTINCT [Month]
INTO #Date
FROM [dbo].[TIMES_TABLE]
WHERE [Week End Date] BETWEEN DATEADD(MONTH, -2, GETDATE()) and GETDATE()
IF OBJECT_ID ('tempdb..#Product') IS NOT NULL
DROP TABLE #Product
SELECT DISTINCT [Product Code], [Product Group]
INTO #Product
FROM [dbo].[PRODUCT_TABLE]
WHERE [Product Group] IN ('DVDs', 'CDs')
SELECT [Month],
SUM([Volume]) AS 'Volume'
FROM [databasename].[dbo].[SALES_TABLE] r
INNER JOIN #Date d ON r.[Month Code] = d.[Month Code]
INNER JOIN #Product p on r.[Product Code] = p.[Product Code]
GROUP BY [Month]
")
Однако:
test <- RODBC::sqlQuery(connect_rodbc, " SELECT TOP 10 * FROM SALES_TABLE")
работает нормально и возвращает кадр данных с 10 наблюдениями, как и ожидалось, поэтому соединение все еще работает.
Исходный запрос занимает около 2 минут для выполнения в SQL Sever Management Studio и, по-видимому, занимает примерно тот же период для запуска в R, однако это просто приводит к пустому символьному вектору
Кто-нибудь знает, почему это может быть?