none
Reporting Services | Se o parâmetro for nulo preciso mostrar toda listagem, senão mostra os dados de acordo com o parâmetro informado RRS feed

  • Pergunta

  • Olá,

    Como faço para mostrar os dados de acordo com o parâmetro informado?

    Imagina a Query "select * from dados where id = @parametroId"

    Caso seja informado o valor para @parametroId, busco o dado para este parâmetro, senão mostro todos os dados sem a condição where.

    Eu teria que ter 2 queries?
    Com parâmetro "select * from dados where id = @parametroId"
    Sem parâmetro "select * from dados"

    Como se faz isto?

    Obrigado


    [Gosto de compartilhar problemas com soluções que encontro no dia de trabalho]


    • Editado TI DEV sábado, 18 de abril de 2020 14:17
    sábado, 18 de abril de 2020 14:16

Respostas

  • Boa tarde,

    Seguem 2 sugestões para testes:

    select * from dados 
    where id = @parametroId or @parametroId is null
    select * from dados 
    where id = coalesce(@parametroId, id)

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta TI DEV terça-feira, 28 de abril de 2020 09:40
    segunda-feira, 20 de abril de 2020 18:45
  • Olá,

    Esta é a resposta!

    No meu código ficou assim:

    where (id  = (@parametroId) or @parametroId is null)


    [Gosto de compartilhar problemas com soluções que encontro no dia de trabalho]


    • Editado TI DEV terça-feira, 28 de abril de 2020 09:40
    • Marcado como Resposta TI DEV terça-feira, 28 de abril de 2020 09:41
    terça-feira, 28 de abril de 2020 09:38

Todas as Respostas

  • Boa tarde,

    Seguem 2 sugestões para testes:

    select * from dados 
    where id = @parametroId or @parametroId is null
    select * from dados 
    where id = coalesce(@parametroId, id)

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta TI DEV terça-feira, 28 de abril de 2020 09:40
    segunda-feira, 20 de abril de 2020 18:45
  • Toriyama,

    Uma outra possibilidade que não é a mais indicada mas pode ser aplicada é o uso da função IsNull(), a qual caberá a você passar o valor a ser utilizada caso a condição de retorno seja Null.

    Veja abaixo:

    -- Exemplo 1 --
    Select * From Dados 
    Where Id = IsNull(@ParametroId, 1)
    Go
    
    -- Exemplo 2 --
    Declare @MaiorID Int
    
    Set @MaiorID = (Select Max(Id) From Dados)
    
    Select * From Dados
    Where Id = IsNull(@ParametroID, @MaiorID)
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 21 de abril de 2020 21:19
  • Olá,

    Esta é a resposta!

    No meu código ficou assim:

    where (id  = (@parametroId) or @parametroId is null)


    [Gosto de compartilhar problemas com soluções que encontro no dia de trabalho]


    • Editado TI DEV terça-feira, 28 de abril de 2020 09:40
    • Marcado como Resposta TI DEV terça-feira, 28 de abril de 2020 09:41
    terça-feira, 28 de abril de 2020 09:38
  • Olá,

    Consegui resolver com o where (id  = (@parametroId) or @parametroId is null)

    Obrigado


    [Gosto de compartilhar problemas com soluções que encontro no dia de trabalho]

    terça-feira, 28 de abril de 2020 09:39