locked
DUVIDA QUERY SIMPLES RRS feed

  • Pergunta

  • BOA TARDE GALERA, TENHO UMA DÚVIDA QUE ACREDITO SER SIMPLES.LÁ VAI A SELECT:

    SELECT  
            cc.cd_clien,
            nome,
            MAX(cc.seq) seq
    FROM
            cont_cli cc
    group by
            cc.cd_clien
           

    ELA AGRUPA TODOS OS CLIENTES DA TABELA CONT_CLI DE MESMO ID, E PEGA A MAIOR SEQUÊNCIA DO CLIENTE (CAMPO SEQ).
    Nessa tabela existe o campo nome, porém, não consigo pegar esse nome pois me dá a seguinte mensagem:

    Msg 8120, Level 16, State 1, Line 3
    Column 'cont_cli.nome' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

    o que fazer para pegar somente o campo NOME, me baseando pelo campo CD_CLIEN e SEQ de cada registro?

    Desde já, OBRIGADO!


    quinta-feira, 4 de maio de 2017 17:59

Respostas

  • Apenas Adicionar o campo nome no Group by

    SELECT  
            cc.cd_clien,
            nome,
            MAX(cc.seq) seq
    FROM 
            cont_cli cc
    group by 
            cc.cd_clien, nome


    Wesley Neves

    quinta-feira, 4 de maio de 2017 18:11
  • Boa noite,

    Filipe, se existem nomes diferentes para o mesmo cd_clien experimente dessa forma:

    with CTE_RN as
    (
        SELECT  
            cd_clien,
            nome,
            seq,
            ROW_NUMBER() OVER(PARTITION BY cd_clien ORDER BY seq DESC) as RN
        FROM cont_cli
    )
    
    select
        cd_clien,
        nome,
        seq
    from CTE_RN
    where 
        RN = 1

    Espero que ajude


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


    quinta-feira, 4 de maio de 2017 23:39

Todas as Respostas

  • Apenas Adicionar o campo nome no Group by

    SELECT  
            cc.cd_clien,
            nome,
            MAX(cc.seq) seq
    FROM 
            cont_cli cc
    group by 
            cc.cd_clien, nome


    Wesley Neves

    quinta-feira, 4 de maio de 2017 18:11
  • Deleted
    quinta-feira, 4 de maio de 2017 21:24
  • Boa noite,

    Filipe, se existem nomes diferentes para o mesmo cd_clien experimente dessa forma:

    with CTE_RN as
    (
        SELECT  
            cd_clien,
            nome,
            seq,
            ROW_NUMBER() OVER(PARTITION BY cd_clien ORDER BY seq DESC) as RN
        FROM cont_cli
    )
    
    select
        cd_clien,
        nome,
        seq
    from CTE_RN
    where 
        RN = 1

    Espero que ajude


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


    quinta-feira, 4 de maio de 2017 23:39