none
Select do maior ID RRS feed

  • Pergunta

  • Boa tarde,

    Tenho uma tabela com esse estrutura:

    CONTATOS_ID;CPF;DDD;TELEFONE;TIPO_TELEFONE;TELEFONES_ID
    10015313;05292580805;24;33677952;TELEFONE RESIDENCIAL;602649647
    10017454;13961072825;24;34433798;TELEFONE RESIDENCIAL;238638058
    10017454;13961072825;24;33536396;TELEFONE RESIDENCIAL;238318809
    1002094;12192591870;24;22420201;TELEFONE RESIDENCIAL;575105462
    1002094;12192591870;24;32420201;TELEFONE RESIDENCIAL;667746824

    Eu gostaria de selecionar numa consulta, apenas os telefones que contiverem o maior ID. Ou seja, viria apenas o telefone mais recentemente adicionado.

    Como ficar essa consulta?.

    Grato.

    segunda-feira, 10 de abril de 2017 17:44

Respostas

  • Acredito que assim resolve

    --CONTATOS_ID;CPF;DDD;TELEFONE;TIPO_TELEFONE;TELEFONES_ID
    --10015313;05292580805;24;33677952;TELEFONE RESIDENCIAL;602649647
    --10017454;13961072825;24;34433798;TELEFONE RESIDENCIAL;238638058
    --10017454;13961072825;24;33536396;TELEFONE RESIDENCIAL;238318809
    --1002094;12192591870;24;22420201;TELEFONE RESIDENCIAL;575105462
    --1002094;12192591870;24;32420201;TELEFONE RESIDENCIAL;667746824
    
    DECLARE @Exemplo TABLE (
    CONTATOS_ID BIGINT,
    CPF BIGINT,
    DDD SMALLINT,
    TELEFONE BIGINT,
    TIPO_TELEFONE VARCHAR(30) DEFAULT('TELEFONE RESIDENCIAL'),
    TELEFONES_ID BIGINT
    )
     
    INSERT  @Exemplo
            ( CONTATOS_ID ,
              CPF ,
    		  DDD,
              TELEFONE ,
              TIPO_TELEFONE ,
              TELEFONES_ID
            )
        VALUES( 10015313 ,05292580805 ,24,33677952 ,DEFAULT, 602649647 ),
    		  ( 10017454 ,13961072825 ,24,34433798 ,DEFAULT, 238638058 ),
    		  ( 10017454 ,13961072825 ,24,33536396 ,DEFAULT, 238318809 ),
    		  ( 1002094 ,12192591870 ,24,22420201 ,DEFAULT, 575105462 ),	
    		  ( 1002094 ,12192591870 ,24,22420201 ,DEFAULT, 667746824 )	
    
     
     ;WITH Dados AS ( SELECT E.CONTATOS_ID ,
                            E.CPF ,
                            E.DDD ,
                            E.TELEFONE ,
                            E.TIPO_TELEFONE ,
                            E.TELEFONES_ID ,
    						MaiorId = MAX(E.TELEFONES_ID) OVER(PARTITION BY E.CONTATOS_ID) FROM @Exemplo AS E
     )
    
     SELECT R.CONTATOS_ID ,
            R.CPF ,
            R.DDD ,
            R.TELEFONE ,
            R.TIPO_TELEFONE ,
            R.TELEFONES_ID ,
            R.MaiorId FROM Dados R
    		WHERE R.TELEFONES_ID = R.MaiorId
    
    


    Wesley Neves

    • Marcado como Resposta Jhony Carvalho segunda-feira, 10 de abril de 2017 18:27
    segunda-feira, 10 de abril de 2017 18:10

Todas as Respostas

  • Essa seria a melhor forma?:

    SELECT CONTATOS_ID,CPF, DDD, TELEFONE, TIPO_TELEFONE,
    (SELECT COUNT(1) AS QTD FROM VW_CPF_DDD_TELEFONE AS U WHERE U.CPF = BASE.CPF) AS QTD
    FROM (
     SELECT 
    CONTATOS_ID,CPF, DDD, TELEFONE, TIPO_TELEFONE
    , ROW_NUMBER() OVER (PARTITION BY CPF ORDER BY CPF DESC) AS RowNumber
     FROM VW_CPF_DDD_TELEFONE
    ) AS BASE
    WHERE RowNumber = 1
    AND DDD = '24'
    AND TIPO_TELEFONE = 'TELEFONE RESIDENCIAL'

    segunda-feira, 10 de abril de 2017 18:02
  • Acredito que assim resolve

    --CONTATOS_ID;CPF;DDD;TELEFONE;TIPO_TELEFONE;TELEFONES_ID
    --10015313;05292580805;24;33677952;TELEFONE RESIDENCIAL;602649647
    --10017454;13961072825;24;34433798;TELEFONE RESIDENCIAL;238638058
    --10017454;13961072825;24;33536396;TELEFONE RESIDENCIAL;238318809
    --1002094;12192591870;24;22420201;TELEFONE RESIDENCIAL;575105462
    --1002094;12192591870;24;32420201;TELEFONE RESIDENCIAL;667746824
    
    DECLARE @Exemplo TABLE (
    CONTATOS_ID BIGINT,
    CPF BIGINT,
    DDD SMALLINT,
    TELEFONE BIGINT,
    TIPO_TELEFONE VARCHAR(30) DEFAULT('TELEFONE RESIDENCIAL'),
    TELEFONES_ID BIGINT
    )
     
    INSERT  @Exemplo
            ( CONTATOS_ID ,
              CPF ,
    		  DDD,
              TELEFONE ,
              TIPO_TELEFONE ,
              TELEFONES_ID
            )
        VALUES( 10015313 ,05292580805 ,24,33677952 ,DEFAULT, 602649647 ),
    		  ( 10017454 ,13961072825 ,24,34433798 ,DEFAULT, 238638058 ),
    		  ( 10017454 ,13961072825 ,24,33536396 ,DEFAULT, 238318809 ),
    		  ( 1002094 ,12192591870 ,24,22420201 ,DEFAULT, 575105462 ),	
    		  ( 1002094 ,12192591870 ,24,22420201 ,DEFAULT, 667746824 )	
    
     
     ;WITH Dados AS ( SELECT E.CONTATOS_ID ,
                            E.CPF ,
                            E.DDD ,
                            E.TELEFONE ,
                            E.TIPO_TELEFONE ,
                            E.TELEFONES_ID ,
    						MaiorId = MAX(E.TELEFONES_ID) OVER(PARTITION BY E.CONTATOS_ID) FROM @Exemplo AS E
     )
    
     SELECT R.CONTATOS_ID ,
            R.CPF ,
            R.DDD ,
            R.TELEFONE ,
            R.TIPO_TELEFONE ,
            R.TELEFONES_ID ,
            R.MaiorId FROM Dados R
    		WHERE R.TELEFONES_ID = R.MaiorId
    
    


    Wesley Neves

    • Marcado como Resposta Jhony Carvalho segunda-feira, 10 de abril de 2017 18:27
    segunda-feira, 10 de abril de 2017 18:10
  • Deleted
    segunda-feira, 10 de abril de 2017 18:24
  • Obrigado Wesley Neves. Abs.
    segunda-feira, 10 de abril de 2017 18:27
  • Nesse exemplo, eu gostaria que me listasse apenas a coluna 'TELEFONES_ID' mais recente.

    CONTATOS_ID;CPF;DDD;TELEFONE;TIPO_TELEFONE;TELEFONES_ID
    1002094;12192591870;24;22420201;TELEFONE RESIDENCIAL;575105462
    1002094;12192591870;24;32420201;TELEFONE RESIDENCIAL;667746824

    Obrigado pela ajuda. Abs.

    segunda-feira, 10 de abril de 2017 18:40