2017-02-17 5 views
0

У меня есть пакет, который работает еженедельно, но он должен остановиться, если в подсчетах разница составляет более 1%.Остановить пакет, если процентное различие в подсчетах меньше 1%

Вот мой запрос, чтобы получить процент от 2 пунктам:

USE MandatedReporting 
DECLARE @a AS float 
DECLARE @b AS float 
declare @c as float 

SET @a = ( SELECT Row_Count 
      FROM [MandatedReporting].[dbo].[DCFS_Weekly_File_Row_Count] WITH(NOLOCK) 
      WHERE TableName = 'MandatedReporting.dbo.MATCH_WEEKLY_V3' 
        AND RunDate = ( SELECT MAX(RunDate) AS RunDate 
            FROM [MandatedReporting].[dbo].[DCFS_Weekly_File_Row_Count] AS ThisWeeksData WITH(NOLOCK) 
            WHERE TableName = 'MandatedReporting.dbo.MATCH_WEEKLY_V3')) 

SET @b = ( SELECT Row_Count 
      FROM [MandatedReporting].[dbo].[DCFS_Weekly_File_Row_Count] WITH(NOLOCK) 
      WHERE TableName = 'MandatedReporting.dbo.MATCH_WEEKLY_V3' 
        AND RunDate = ( SELECT MIN(RunDate) AS RunDate 
            FROM [MandatedReporting].[dbo].[DCFS_Weekly_File_Row_Count] AS ThisWeeksData WITH(NOLOCK) 
            WHERE TableName = 'MandatedReporting.dbo.MATCH_WEEKLY_V3' 
            AND ABS(DATEDIFF(DD,GETDATE(),CAST(RunDate AS DATETIME))) < 10)) 

set @c = (@[email protected]) *100.0/@b SELECT @c as 'Count' 

SQL Server 2008 Спасибо

+0

Забыл упомянуть, что я новичок в SSIS – Brian

+0

Что вы подразумеваете под остановкой? Выйти счастливо или выбросить ошибку? –

ответ

1

Вы ищете условное разделение. После того, как вы выполните свою хранимую процедуру в Execute SQL Task, вам нужно сохранить результат в переменной, а затем выполнить условный сплит на основе вывода.

enter image description here

Только вместо того, чтобы писать в файл вы просто закончить свой поток данных, или же, если вы хотите ядерный вариант вы можете бросить ошибку или сделать то же самое в хранимая процедура:

begin 
    raiserror('Foo Bar',16,1) 
end 
+0

Спасибо за информацию. – Brian

+0

@Brian Если это работает для вас, пожалуйста, подумайте о правильном ответе – bc004346

Смежные вопросы