Cuidado com o IF Exists 2
Pessoal parei para pensar um pouco e aquele loop, virou isso,
CREATE TABLE CONCRAUX (ID Int,
CONSTRAINT XPKCONCRAUX PRIMARY KEY(ID))
GO
DECLARE @I Int
SET @I = 1
WHILE @I < 1000
BEGIN
INSERT INTO CONCRAUX(ID) VALUES(@I);
SET @I = @I + 1
END
GO
SELECT @ID_Grupo,
@CD_Grupo,
CONCRAUX.ID AS CD_Cota,
ISNULL(CONVE046.SN_Utilizada,’N’) AS ST_Reserva
FROM CONCRAUX
LEFT OUTER JOIN CONVE002
ON CONCRAUX.ID = CONVE002.CD_Cota
AND CONVE002.ID_Grupo = @ID_Grupo
AND CONVE002.Versao = 0
LEFT OUTER JOIN CONVE046
ON CONVE046.ID_Grupo = @ID_Grupo
AND CONVE046.CD_Cota = CONCRAUX.ID
AND CONVE046.DT_Validade >= @DT_Base
AND CONVE046.SN_Utilizada = ‘N’
WHERE CONCRAUX.ID <= @NO_Maximo_Cota
AND CONVE002.ID_Cota IS NULL
AND (@ST_Reserva = ‘T’ OR ISNULL(CONVE046.SN_Utilizada,’N’) = @ST_Reserva)
Ou seja, criei uma tabela sequencial, e fiz o join com ela.