Usuário com melhor resposta
Select meio louco

Pergunta
-
Tenho uma tabela com vários campos, mas quero destacar os seguintes:
IDPassos, IDOrigem e DEscricaoCateg.
IDPassos é PK e claro ele não repete. Mas origem sim, então eu posso ter o seguinte:
Passos Origem Descricao
1.............1...........Teste
2.............1...........Teste2
3.............1...........Teste3
4.............2..........Outra Coisa
5............2...........Outra Coisa2
O que eu quero é o seguinte. Fazer um select que me traga o IDPassos de menor valor, pois essa é a forma de entender que esse é o passo iniciante, logo nesse select deveria trazer o IDPasso 1 e 4 apenas. Não sei como eu faço isso.
Respostas
-
Boa tarde,
Experimente desta forma:
with CTE as ( select Passos, Origem, Descricao, ROW_NUMBER() OVER(PARTITION BY Origem ORDER BY Passos) as RowNum from Tabela ) select * from CTE where RowNum = 1
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Roberson Ferreira _Moderator quarta-feira, 31 de outubro de 2012 10:19
- Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 13:38
Todas as Respostas
-
Boa tarde,
Experimente desta forma:
with CTE as ( select Passos, Origem, Descricao, ROW_NUMBER() OVER(PARTITION BY Origem ORDER BY Passos) as RowNum from Tabela ) select * from CTE where RowNum = 1
Espero que seja útil.
Assinatura: http://www.imoveisemexposicao.com.br
- Sugerido como Resposta Roberson Ferreira _Moderator quarta-feira, 31 de outubro de 2012 10:19
- Marcado como Resposta Ricardo Russo quarta-feira, 2 de janeiro de 2013 13:38
-
pnet,
Você deseja trazer o menu ID de cada IDOrigem?
Se for isso, além de utilizar Common Table Expression indicada Gapimex, você poderá trabalhar com agrupamento de valores, utilizando a função Min em conjunto como o comando Group By.
Veja o exemplo abaixo:
Create Table Valores (ID Int, IDOrigem Int, Descricao Varchar(20)) Insert Into Valores Values(1,1,'valor') Insert Into Valores Values(2,1,'valor') Insert Into Valores Values(3,1,'valor') Insert Into Valores Values(4,1,'valor') Insert Into Valores Values(5,2,'valor') Insert Into Valores Values(6,2,'valor') Insert Into Valores Values(7,3,'valor') Select MIN(ID), IDOrigem, Descricao from Valores Group By IDOrigem, Descricao
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
- Sugerido como Resposta Roberson Ferreira _Moderator quarta-feira, 31 de outubro de 2012 10:19
- Não Sugerido como Resposta Roberson Ferreira _Moderator quarta-feira, 31 de outubro de 2012 13:24
-
-
Só para explicar melhor. Não é o menor de todos, mas sim, todos os menores em cada conjunto de IDOrigem. Então, em 100.000 registros, eu trago, por exemplo 10.000 IDPassos, que seriam os menores dentro do conjunto ou grupo ou qualquer coisa do gênero de IDOrigens, não sei se ficou claro.
-
A query que sugeri não funcionou?
Se a versão do SQL Server utilizada é anterior a 2005, experimente desta forma:
select t.* from (select MIN(IDPassos) as IDPassos, IDOrigem from Tabela group by IDOrigem) as m join Tabela as t on t.IDPassos = m.IDPassos
Se não funcionar, informe por favor o problema ocorrido.
Assinatura: http://www.imoveisemexposicao.com.br