none
Distinct somente um campo RRS feed

  • Pergunta

  • Olá,

    no postgres o DISTINCT pode ser realizado em apenas um campo, se não me engano a cláusula é: SELECT DISTINCT ON(campoA), outrosCampos FROM tabela.

    No SqlServer, tenho uma consulta como segue: 

    SELECT DISTINCT campoA, campoB, campoC FROM tabela

    mas acontece que o resultado está retornando valores duplicados para o meu interesse, como segue:

    campoA    campoB    campoC

    1                    A             T

    1                    B             T

    2                   A              T

    3                   A              T

    No resultado acima, eu queria que o DISTINCT fosse realizado em cima de apenas um campo (campoA), sendo assim a 2ª linha do select não iria retornar.

    Alguém tem alguma dica?

    sexta-feira, 12 de setembro de 2014 14:07

Respostas

  • Bom dia,

    Experimente mais ou menos dessa forma:

    with CTE_RN as
    (
        select
            campoA,
            campoB,
            campoC,
            ROW_NUMBER() OVER(PARTITION BY campoA ORDER BY campoB) as RN
        from Tabela
    )
    
    select * from CTE_RN
    where RN = 1

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 12 de setembro de 2014 14:16
  • Tem que vê o que você esta querendo exatamente, se for para mostrar o menor valor do campoB e campoC, seria assim...

    select	campoA,
    	min(campoB),
    	min(campoC)
    from	tabela
    group	by campoA



    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    sexta-feira, 12 de setembro de 2014 14:21

Todas as Respostas

  • Bom dia,

    Experimente mais ou menos dessa forma:

    with CTE_RN as
    (
        select
            campoA,
            campoB,
            campoC,
            ROW_NUMBER() OVER(PARTITION BY campoA ORDER BY campoB) as RN
        from Tabela
    )
    
    select * from CTE_RN
    where RN = 1

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 12 de setembro de 2014 14:16
  • Tem que vê o que você esta querendo exatamente, se for para mostrar o menor valor do campoB e campoC, seria assim...

    select	campoA,
    	min(campoB),
    	min(campoC)
    from	tabela
    group	by campoA



    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    sexta-feira, 12 de setembro de 2014 14:21