none
Outra solução para Insert com Select RRS feed

  • Pergunta

  • 
    
    
    
    
    
    
    
    

    Pessoal, boa tarde.

    Eu tenho uma dúvida sobre como fazer o código abaixo gerar um únici resultado com todas as linhas de retorno e não um resultado com cada linha.

    Declare @ContSeq Int

    Declare @ContReg Int

    Set @ContSeq = (select count (*) from e009pte where codemp = 1)

    Set @ContReg = @ContSeq + 1

    While @ContSeq <>0

    Begin

    Select @ContReg,@ContSeq Set @ContSeq = @Conseq - 1 Set @ContReg = @ContReg + 1

    End

    
    Um abraço.
    quinta-feira, 19 de abril de 2012 16:29

Respostas

  • Olá HMoraes,

    Você pode fazer usando uma cte recursiva

    DECLARE @CONTSEQ INT
     
    DECLARE @CONTREG INT
     
    SET @CONTSEQ = 100 --(SELECT COUNT (*) FROM E009PTE WHERE CODEMP = 1)
     
    SET @CONTREG = @CONTSEQ + 1
     
    WHILE @CONTSEQ <>0
     
    BEGIN
     
    SELECT @CONTREG,@CONTSEQ SET @CONTSEQ = @CONTSEQ - 1 SET @CONTREG = @CONTREG + 1
     
    END
    
    SET @CONTSEQ = 100 --(SELECT COUNT (*) FROM E009PTE WHERE CODEMP = 1)
     
    SET @CONTREG = @CONTSEQ + 1
    
    --CTE_RECURSIVA
    WITH CONTADOR 
    AS( SELECT @CONTSEQ AS CONTSEQ,@CONTREG AS CONTREG 
    	UNION ALL
    	SELECT CONTSEQ-1,CONTREG+1 FROM CONTADOR
    	WHERE CONTSEQ <> 0
    )SELECT * FROM CONTADOR
    OPTION (MAXRECURSION 100);
    --no option maxrecursion coloque a quantidade de registros que a query precisa trazer


    Att.
    Lukas Baldan




    quinta-feira, 19 de abril de 2012 16:51