Usuário com melhor resposta
Select do maior ID

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;667746824Eu 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.
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
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' -
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
-
-
-
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.