Usuário com melhor resposta
Trazer valores intermediários entre o máximo e o mínimo de determinada coluna

Pergunta
-
Olá pessoal,
Tenho a seguinte query:
select min(quantidade) qtd from tabela union select max(quantidade) qtd from tabela
Que me retorna o seguinte:
qtd
10
20
Só que eu quero que os valores intermediários também apareçam, como:
qtd
10
11
12
13
14
15
16
...
20
Como posso fazer isso?
- Editado Jean F Cavalcante sexta-feira, 5 de dezembro de 2014 14:20
Respostas
-
Jean,
Veja se este exemplo ajuda:
USE TEMPDB Go Declare @Numeros Table (Numero Int) Set NoCount On Declare @Contador TinyInt, @MenorValor TinyInt, @MaiorValor TinyInt Set @Contador=1 While @Contador <=100 Begin Insert Into @Numeros Values (@Contador) Set @Contador +=1 End Set @MenorValor=(Select MIN(Numero) from @Numeros Where Numero <=30) Set @MaiorValor=(Select MAX(Numero) from @Numeros Where Numero <=30) Select @MenorValor, @MaiorValor Select @MenorValor Union Select Numero From @Numeros Where Numero Between @MenorValor+1 And @MaiorValor-1 Union Select @MaiorValor
Veja este outro exemplo como se fosse uma Stored Procedure:
Create Procedure P_ValorIntermediarios (@TotalNumeros SmallInt, @Limitador SmallInt) As Begin Set NoCount On Declare @Numeros Table (Numero Int) Declare @Contador SmallInt, @MenorValor SmallInt, @MaiorValor SmallInt Set @Contador=1 While @Contador <=@TotalNumeros Begin Insert Into @Numeros Values (@Contador) Set @Contador +=1 End Set @MenorValor=(Select MIN(Numero) from @Numeros Where Numero <=@Limitador) Set @MaiorValor=(Select MAX(Numero) from @Numeros Where Numero <=@Limitador) Select @MenorValor As 'Menor Valor', @MaiorValor As 'Maior Valor' Select @MenorValor Union Select Numero As 'Sequência Completa' From @Numeros Where Numero Between @MenorValor+1 And @MaiorValor-1 Union Select @MaiorValor End Exec P_ValorIntermediarios 500, 250 Go
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Marcado como Resposta Jean F Cavalcante sexta-feira, 5 de dezembro de 2014 14:55
Todas as Respostas
-
Olá , sua placa de ter tais dados ou queires para deixar os números correlativos .
Você tem em sua mesa é fácil, mas para usar um laço FORSelect quantidade from tabela
Where quantidade between (select min(quantidade) from tabela ) and (select max(quantidade) from tabela)
Best Regards
JM Claudio Dba/Consultor SQL/BI Pasiona - Spain
-
-
Jean,
Veja se este exemplo ajuda:
USE TEMPDB Go Declare @Numeros Table (Numero Int) Set NoCount On Declare @Contador TinyInt, @MenorValor TinyInt, @MaiorValor TinyInt Set @Contador=1 While @Contador <=100 Begin Insert Into @Numeros Values (@Contador) Set @Contador +=1 End Set @MenorValor=(Select MIN(Numero) from @Numeros Where Numero <=30) Set @MaiorValor=(Select MAX(Numero) from @Numeros Where Numero <=30) Select @MenorValor, @MaiorValor Select @MenorValor Union Select Numero From @Numeros Where Numero Between @MenorValor+1 And @MaiorValor-1 Union Select @MaiorValor
Veja este outro exemplo como se fosse uma Stored Procedure:
Create Procedure P_ValorIntermediarios (@TotalNumeros SmallInt, @Limitador SmallInt) As Begin Set NoCount On Declare @Numeros Table (Numero Int) Declare @Contador SmallInt, @MenorValor SmallInt, @MaiorValor SmallInt Set @Contador=1 While @Contador <=@TotalNumeros Begin Insert Into @Numeros Values (@Contador) Set @Contador +=1 End Set @MenorValor=(Select MIN(Numero) from @Numeros Where Numero <=@Limitador) Set @MaiorValor=(Select MAX(Numero) from @Numeros Where Numero <=@Limitador) Select @MenorValor As 'Menor Valor', @MaiorValor As 'Maior Valor' Select @MenorValor Union Select Numero As 'Sequência Completa' From @Numeros Where Numero Between @MenorValor+1 And @MaiorValor-1 Union Select @MaiorValor End Exec P_ValorIntermediarios 500, 250 Go
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
- Marcado como Resposta Jean F Cavalcante sexta-feira, 5 de dezembro de 2014 14:55
-
Olá
Select quantidade from tabela
Where quantidade between (select min(quantidade) from tabela ) and (select max(quantidade) from tabela)
group by quantidade
Saludos
JM Claudio Dba/Consultor SQL/BI Pasiona - Spain
- Sugerido como Resposta JM Claudio sexta-feira, 5 de dezembro de 2014 15:01