none
Como delimitar uma quantidade de registros em uma consulta? RRS feed

  • Pergunta

  • Boa tarde galera,

     

    Preciso controlar a quantidade de registros em uma consulta, sei que se usar o:

    SELECT TOP 10 PERCENT * FROM TABELA
    

    irá retornar somente os primeiros 10 registros da tabela, dependendo da sua ordenação.

    Existe alguma forma de "aumentar" os registro de alguma consulta, sem que esta tenha dados a exibir?

    Ex: tenho uma tabela que lista somente 5 registros, quero que, ao consultá-la, esta me informe 10 registros.

     

    Motivo desta solicitação: tenho um gráfico que fica mau formatado quando este têm poucos registros.

     

    Atenciosamente,

     

    Rogério

     

    segunda-feira, 19 de julho de 2010 19:29

Todas as Respostas

  • Boa tarde Rogério,

          Sei que é uma necessidade no seu cenário, mas, acredito que não é uma boa prática vc manipular o valor (resultado) de uma consulta, para resolver um outro problema. Talvez não sería melhor estudar outras formas de apresentar o seu gráfico do que alterar o valor da consulta???. Rogério, deixo claro que é apenas uma opinião, pq cada caso é um caso...rsrsrs
    Ahhh... sobre o TOP 10 PERCENT que vc mencionou acima, não significa que ele irá retornar 10 registros, significa que irá retornar 10% do conjunto de dados resultante do seu select. Para retornar somente 10 registros, use o TOP 10, sem o percent.

    att.
    Rafael

     

    segunda-feira, 19 de julho de 2010 19:44
  • Ok Rafael,

     

    Concordo com você a respeito da formatação, mas eu tinha aberto outra pergunta mas ninguém chegou a nenhuma conclusão. Acontece que o meu gráfico aumenta os registros conforme vão passando os meses, assim tenho que aumentar ou diminuir o seu tamanho manualmente. Você sabe de alguma forma para auto redimensionar o gráfico?

     

    Abraço!

     

    Rogério

    segunda-feira, 19 de julho de 2010 19:48
  • Olá Rogério,

    Eu concordo com o Rafael quando ele fala que não é uma boa prática manipular o resultado da consulta para resolver o problema do seu gráfico. Entretanto, é possível fazer algo para tentar resolver isso e vc tem de mensurar o que é mais custoso.

    Você poderia criar uma procedure para realizar sua consulta e inserir estes dados numa tabela temporária, verifica qual a quantidade de registros e sendo menor que 10, retorna dados "em branco" para completar a quantidade correta e não afetar seu gráfico. Reforço que esta é uma forma de tentar resolver o problema de forma 'paleativa'.

    O melhor mesmo seria você conseguir parametrizar seu gráfico para resolver de vez o problema, independente do resultado de linhas da consulta.

    Att.


    Erickson Ricci - MCP, MCTS, MCTS BI
    segunda-feira, 19 de julho de 2010 20:20
  • Rogério,

    Você poderia tentar forçar a geração de produto cartesiano utilizano o operador Cross Join!!!

     

    Veja o exemplo:

     

    Declare

    @Tabela Table

     

    (Codigo Int Identity,

    Valor float Default 10)

     

    Insert

    Into @Tabela default values

    Insert

    Into @Tabela default values

    Insert

    Into @Tabela default values

    Insert

    Into @Tabela default values

    Insert

    Into @Tabela default values

    Select

    T1.* From @Tabela T1 Cross Join @Tabela T2


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário]
    terça-feira, 20 de julho de 2010 00:02
  • Insira 10 registros numa tabela temporaria com os mesmos tipos de dados colocando informacoes genériacas null 0 nao sei qual seira o padrao

    e depois efetue um union all


    Rafael Ferraz Lima
    terça-feira, 20 de julho de 2010 22:55