У меня есть скрипт catch, который предназначен для подбора, когда сумма выходит с нулевым значением, и вставки 0, который отлично работает для одного запроса, но не для моего текущего, если я разбиваю, какой код я использую
Declare @Period int = 5
SELECT A.MATTER_CODE,DATEPART(month,A.DATE_OPENED) As DateOpened,B.DEPTNAME,B.DEPTCODE
INTO #TmpPREVYTD
FROM MATTER A
LEFT JOIN DEPT_MASTER B on A.DEPT_CODE = B.DEPTCODE
WHERE A.date_opened between DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, -1, GETDATE())), 120) and
DATEADD(YEAR, DATEDIFF(YEAR, 0,DATEADD(YEAR, 0, GETDATE())), 120)
ORDER BY DATE_OPENED
Это выталкивает данные, которые мне нужны для запроса в правильном году и месяце
SELECT COUNT(*) As 'Fin',Dateopened Into #TmpPFin FROM #TmpPREVYTD where DEPTCODE = 'FIN' GROUP BY
DATEOPENED
Это учитывается каждый раз, когда задание, относящееся к финансам, находится в необработанных данных.
SELECT SUM(FIN)As Fin INTO #PFIN FROM #TmpPFIN WHERE Dateopened Between 5 and @Period
Это затем суммирует все месяцы, которые относятся к требуемым установленным месяцам, поэтому в этом примере я просто хочу, чтобы он считал только май, в котором ничего нет, поэтому он выдвигает нулевое значение.
If EXISTS(Select Fin from #PFIN)
GOTO TmpITD
Else insert into #PFIN (Fin) Values( 0)
TmpITD:
Наконец, это перехватчик, который должен найти #PFin, имеющий нулевое значение, и вставить 0, однако я думаю, что он идет прямо к TmpITD, как будто я просто запускаю вставкув операторе добавляется 0.
, поэтому в настоящее время, если я выполняю весь оператор, я получаю нулевое значение, что означает, что отчет в конце выходит пустым.
Я что-то здесь упускаюЕсли этот точно такой же код работает в других запросах, но не в этом, может показаться, что, возможно, он существует каким-то образом, но с нулевым значением, что меня полностью смутило.
РЕДАКТИРОВАТЬ: Если я добавлю что-то кконец TmpITD это выталкивает, так что теперь я точно знаю, что проблема в том, что если Exists думает, что он существует, когда на самом деле имеет значение Null