Составил запрос, который в основном просматривает таблицу, которая содержит все банковские праздники, а затем просматривает каждый месяц для текущего финансового года, а затем сообщает мне, сколько рабочих дней доступно для работы за вычетом банковских и выходных дней.Например, в этом месяце их 21. Существует также совокупное поле, которое в основном складывается каждый месяц, поэтому совокупное число за апрель-февраль будет содержать все эти дни.
В запросе есть 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