none
SELECT MAX RRS feed

  • Pergunta

  • Bom dia pessoal ,

    Seguinte estou fazendo um select max em um determinado campo da tabela para o select trazer o maior campos e adicionar mais 1.

    Exemplo:

      DECLARE @cod smallint
      SET @cod = (SELECT MAX(Id_CadastroPlano) +1
      FROM Cadastro_Planos
      WHERE Id_Cadastro =   @P_Id_Cadastro)

    Este select funciona perfeito quando ja tem um registro na tabela , se a tabela não tiver nenhum registro em vez dele trazer 1 ele traz NULL , pois os campos estão todos NULL na tabela pois a mesma esta vazia.

    Alguem saberia me dizer como eu zero os valores da tabela quando ela não tiver nada para que meu select max traga 1 e não NULL ?

    Obrigado,
    quarta-feira, 17 de outubro de 2007 12:55

Todas as Respostas

  • tenta assim

    SET @cod = (SELECT isnull(MAX(Id_CadastroPlano),0) +1
    quarta-feira, 17 de outubro de 2007 12:59
  • Ok S4ndr0 funcionou perfeitamente ...

    Obrigado pela dica ...
    quarta-feira, 17 de outubro de 2007 13:07
  • Danilo,

     

    Com o objetivo de ilustrar a resposta do Sandro, segue abaixo outras possibilidades para realizar o cálculo:

     

    Code Block

    SELECT MAX(Id_CadastroPlano) +1 As Soma
      FROM Cadastro_Planos
      WHERE Id_Cadastro =   @P_Id_Cadastro

     

    ou utilizando a função IsNull


    SELECT IsNull(MAX(Id_CadastroPlano)+1),1) 
      FROM Cadastro_Planos
      WHERE Id_Cadastro =   @P_Id_Cadastro

     

     

    quarta-feira, 17 de outubro de 2007 13:33
  • Boa tarde Danilo,

     

     

    Uma dica é: se o campo Id_CadastroPlano da sua tabela Cadastro_Planos for o campo da sua  Primary Key, é preferível dar um Select na Tabela SysIndexes retornando o campo Rows, é muito mais rápido dependendo do tamanho da sua tabela. Ex:

     

     

    Declarre @cod_smallint

     

    Select @cod_smallint = IsNull(Rows,1) From SysIndexes

     

     

     

     

     

     

    Espero ter ajudado

    quarta-feira, 17 de outubro de 2007 19:49