Select meio louco
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.
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.
Pjava
Curtidas 0
Respostas
Claudia Nogueira
30/10/2012
Tenta assim:
SELECT t.idpassos, t.idorigem, te.descricaocateg FROM (SELECT MIN(idpassos) AS idpassos, idorigem FROM tabela GROUP BY 2) t, tabela te WHERE t.idpassos = te.idpassos
GOSTEI 0
Jair N.
30/10/2012
Bom Dia, para começar só vou te perguntar o resultado deste exemplo seria pela descrição "teste" e "outra coisa"? se for essa a situação, veja este exemplo abaixo:
SELECT my_teste.*
FROM (SELECT tab_texte.*
, RANK() OVER (PARTITION BY tab_texte.idorigem ORDER BY tab_texte.idpassos) AS ranking
FROM dbo.tab_texte
) my_teste
WHERE (my_teste.ranking = 1)
-- ORDER BY my_teste.ranking DESC { 31OUT2012 Não será necessário a classificação...}
SELECT my_teste.*
FROM (SELECT tab_texte.*
, RANK() OVER (PARTITION BY tab_texte.idorigem ORDER BY tab_texte.idpassos) AS ranking
FROM dbo.tab_texte
) my_teste
WHERE (my_teste.ranking = 1)
-- ORDER BY my_teste.ranking DESC { 31OUT2012 Não será necessário a classificação...}
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.
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.
GOSTEI 0
Pjava
30/10/2012
Não consegui rodar ainda o que a claudia me enviou. Jair, o que eu quero é trazer sempre o menor IDPassos, conforme post. Sempre o menor. Eu vou ter nessa tabela milhares de idpassos, e preciso trazer sempre o menor deles, sempre. Porque o menor IDPassos é o passo iniciante e é isso que eu preciso.
GOSTEI 0
Claudia Nogueira
30/10/2012
Que erro que deu?
Não consegui rodar ainda o que a claudia me enviou. Jair, o que eu quero é trazer sempre o menor IDPassos, conforme post. Sempre o menor. Eu vou ter nessa tabela milhares de idpassos, e preciso trazer sempre o menor deles, sempre. Porque o menor IDPassos é o passo iniciante e é isso que eu preciso.
GOSTEI 0
Jair N.
30/10/2012
Sim, eu entendi o enunciado do problema. Voce testou o exemplo que enviei? Só terá que alterar o nome da tabela (tab_teste) que não sei qual é a sua. Como eu disse "de acordo com o exemplo fornecido" o "menor item da IDPassos" seria, demonstrado pela descrição deste: "teste" e "outra coisa". Agora, se caso, terá mais itens, não faz parte do exemplo exposto. Em teste veja o que foi enviado... verifique... Olha principalmente a ordem no campo RANKING que é pelo menor item do IDPAssos em relação ao IDOrigem...
Não consegui rodar ainda o que a claudia me enviou. Jair, o que eu quero é trazer sempre o menor IDPassos, conforme post. Sempre o menor. Eu vou ter nessa tabela milhares de idpassos, e preciso trazer sempre o menor deles, sempre. Porque o menor IDPassos é o passo iniciante e é isso que eu preciso.
GOSTEI 0
Pjava
30/10/2012
Ok, eu ainda não testei porque não estou no trampo. Assim que estiver lá vou testar e posto qualquer novidade.
GOSTEI 0
Claudia Nogueira
30/10/2012
A tá entendi. É que antes de enviar eu testei. Criei uma tabela com os campos mencionados e também inseri as informações, e com o SELECT que eu te enviei mostrou exatamente o que você precisava.
Ok, eu ainda não testei porque não estou no trampo. Assim que estiver lá vou testar e posto qualquer novidade.
GOSTEI 0