Не получается правильный вывод из запроса SQL Server - PullRequest
2 голосов
/ 04 июня 2011
ALTER PROCEDURE [dbo].[Sp_GetEmailForMailing] 
    -- Add the parameters for the stored procedure here
    @end int=1000
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT top(500) RegistrationID, EmailID from dbo.Candidate_RegistrationData
    where status_flag=1 and payment_status=2
    and RegistrationID NOT IN (SELECT top(@end) RegistrationID from dbo.Candidate_RegistrationData
    where status_flag=1 and payment_status=2) order by RegistrationID
END

Это моя хранимая процедура.В этом я хочу строки от 500, но я получаю от 250 номер строки .... любой знает, почему это произошло ... спасибо

Ответы [ 2 ]

3 голосов
/ 04 июня 2011

Подзапрос, используемый в качестве источника данных для NOT IN, не имеет предложения ORDER BY.В результате механизм запросов может свободно принимать строки TOP(@end) в любом порядке, в котором сочтет нужным.

0 голосов
/ 04 июня 2011

Я надеюсь, что вы хотите пропустить top @ end регистрация, Заказ по RegistrationID

Вы должны попробовать следующий код.

ALTER PROCEDURE [dbo].[Sp_GetEmailForMailing]   

@end int = 1000  

AS  

SET NOCOUNT ON;

BEGIN
    Select Top(500) RegistrationID, EmailID From
    (
         Select Row_Number() Over(Order by RegistrationID) as RowId, 
                   RegistrationID,     
                   EmailID,    
                   status_flag, 
                   payment_status
         From dbo.Candidate_RegistrationData
         Where status_flag = 1 and payment_status = 2
    )T
    Where RowId > @end and status_flag = 1 and payment_status = 2 
    Order By RegistrationID
End
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...