Построил запрос, который в основном рассматривает таблицу, которая содержит все праздничные дни, а затем просматривает каждый месяц текущего финансового года, а затем рассказывает мне, сколько рабочих дней доступно для работы минус банковские звонки и выходные. Например, в этом месяце есть 21. Существует также кумулятивная подача, которая в основном складывается каждый месяц, поэтому кумулятивный за апрель-февр будет иметь все эти дни.Задача SSIS, включая SQL, которая создает временную таблицу
В запросе есть дескриптор CreateTable #DATA, который отбрасывается в конце, это отлично работает в Management Studio и работает правильно.
Моя проблема в том, что я выполняю задание SSIS и сохранил свой запрос в виде файла SQL и выбрал его с помощью кнопки «Обзор». Это не позволяет мне продолжать, поскольку я считаю, что у него есть проблема с временной таблицей (см. Снимок экрана)
Любые предложения о том, как я могу заставить это работать при сохранении функциональности?
Пожалуйста, смотрите код для справки:
DECLARE @StartDate DATETIME,
@EndDate DATETIME
SELECT @StartDate = (select
case when month(getdate()) >= 4 then
convert(datetime, cast(year(getdate()) as varchar) + '-4-1')
else
convert(datetime, cast(year(getdate())-1 as varchar) + '-4-1')
end),
@EndDate = (select
case when month(getdate()) < 4 then
convert(datetime, cast(year(getdate()) as varchar) + '-3-31')
else
convert(datetime, cast(year(getdate())+1 as varchar) + '-3-31')
end)
CREATE TABLE #data
(
firstday DATETIME NOT NULL PRIMARY KEY,
workingdays INT NOT NULL
);
WITH dayscte ([Date])
AS (SELECT @StartDate
UNION ALL
SELECT Dateadd(DAY, 1, [Date])
FROM dayscte
WHERE [Date] <= @Enddate)
INSERT INTO #data
SELECT MIN([Date]),
COUNT(*) [Day]
FROM table2
LEFT JOIN [dbo].[mydb].[mytable1]
ON [Date] BETWEEN [dbo].[mydb].[mytable1].startdate AND [dbo].[mydb].[mytable1].enddate
where
NOT EXISTS (
SELECT field1,field2 FROM [dbo].[mydb].[mytable1].tscheme_cal WHERE
dayid ='0234572347854234'
AND
[date] <= startdate
AND
[date] >= enddate
)
AND Datename(weekday, [Date]) NOT IN ('Saturday', 'Sunday')
GROUP BY Datepart(MONTH, [Date]),
Datepart(YEAR, [Date])
OPTION (MAXRECURSION 366)
DECLARE @Date DATETIME
SET @Date = (SELECT MIN(firstday)
FROM #data)
SELECT Period,
workingdays [Days_Available] ,
year (firstday) AS [Year]
FROM (SELECT Datename(MONTH, firstday) [Period],
workingdays,
0 [SortField],
firstday
FROM #data
UNION
SELECT Datename(MONTH, @Date) + ' - ' + Datename(MONTH, firstday),
(SELECT SUM(workingdays)
FROM #data b
WHERE b.firstday <= a.firstday) [WorkingDays],
1 [SortField],
firstday
FROM #data a
WHERE
firstday > @Date) data
ORDER BY sortfield,
firstday
DROP TABLE #data
Вы пробовали 'объявить @data таблицу? – ChrisBD
Также проверьте мой ответ на этот похожий вопрос http://stackoverflow.com/questions/18346484/ssis-package-not-wanting-to-fetch-metadata-of-temporary-table/18360265#18360265 –