none
Como obter um código relacionado a linha obtida pelo MIN RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    tenho uma tabela com a seguinte estrutura :

    produto_ID | variacao | valor
    1 | xxx | 10
    1 | yyy | 8
    2 | zzz | 4
    2 | ooo| 2
    2 | yyy| 6

    Eu preciso obter o campo variação , de cada produto, com o menor valor
    O resultado seria

    1 | yyyy | 8 
    2 | ooo | 2

    Alguém tem idéia de como fazer ?
    To quebrando a cabeça com essa query !

    quarta-feira, 10 de fevereiro de 2016 18:21

Respostas

  • Boa tarde Rafael.

    O ROW_NUMBER pode te ajudar,

    SELECT  produto_ID,variacao,valor FROM 
    (
    SELECT produto_ID,variacao,valor,ROW_NUMBER() OVER(PARTITION BY PRODUTO_ID ORDER BY VALOR) ORDERM FROM TABELA
    )TAB WHERE ORDERM = 1

    Att

    Reginaldo Silva

    • Marcado como Resposta Rafael Metring quarta-feira, 10 de fevereiro de 2016 20:09
    quarta-feira, 10 de fevereiro de 2016 18:50

Todas as Respostas

  • Olá Rafael Metring,

    Poderia mostrar o seu código e pontuar o erro que está ocorrendo para que a comunidade possa auxiliar?

    Atenciosamente


    Marcos SJ

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 10 de fevereiro de 2016 18:34
  • Boa tarde Rafael.

    O ROW_NUMBER pode te ajudar,

    SELECT  produto_ID,variacao,valor FROM 
    (
    SELECT produto_ID,variacao,valor,ROW_NUMBER() OVER(PARTITION BY PRODUTO_ID ORDER BY VALOR) ORDERM FROM TABELA
    )TAB WHERE ORDERM = 1

    Att

    Reginaldo Silva

    • Marcado como Resposta Rafael Metring quarta-feira, 10 de fevereiro de 2016 20:09
    quarta-feira, 10 de fevereiro de 2016 18:50
  • Esse código aqui deve servir, apesar de eu não achar muito "elegante". Se ninguém propor uma solução melhor...

    WITH wtabela AS (
    SELECT produto_ID, MIN(valor) valor 
    FROM tabela 
    GROUP BY produto_ID
    )
    SELECT t2.* FROM wtabela t1
    LEFT JOIN tabela t2 
    ON t1.produto_ID = t2.produto_ID  AND t1.valor = t2.valor
    

    No SQL Server podemos usar a cláusula WITH para retornar um resultado temporário

    quarta-feira, 10 de fevereiro de 2016 18:56
  • Reginaldo, você salvou minha vida ! 

    Já estava perdendo o resto dos cabelos tentando resolver.. Obrigado !
    • Marcado como Resposta Rafael Metring quarta-feira, 10 de fevereiro de 2016 20:09
    • Não Marcado como Resposta Rafael Metring quarta-feira, 10 de fevereiro de 2016 20:09
    quarta-feira, 10 de fevereiro de 2016 20:09