none
Contador para mudança de nomes RRS feed

  • Pergunta

  • Prezados,

    necessito criar um contador quando houver mudança de nome quero somar mais um neste contador.

    A tabela final ficaria assim:

    Contador Nomes
    1 João 
    1 João 
    2 Maria
    2 Maria
    2 Maria
    2 Maria
    2 Maria
    3 José
    3 José
    3 José
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    5 João 
    5 João 
    6 Maria
    6 Maria
    6 Maria
    6 Maria
    6 Maria

    quinta-feira, 8 de junho de 2017 20:29

Respostas

Todas as Respostas

  • Boa tarde Silas,

    Acredito que a função DENSE_RANK te ajude a solucionar esse problema.

    De uma olhadas nos exemplos do Books online explica direitinho como funciona.

    https://docs.microsoft.com/en-us/sql/t-sql/functions/dense-rank-transact-sql

    Atenciosamente

    Reginaldo Silva

    quinta-feira, 8 de junho de 2017 21:12
  • Deleted
    quinta-feira, 8 de junho de 2017 23:52
  • Na sua tabela tem um campo ID referente ão nome ??

    Wesley Neves
    Brasilia-DF
    MTA-SQL Server
    Pós-Graduando em Banco de Dados 
    "Se a resposta for útil ou ajudar ,não esqueça de marcar"


    Wesley Neves

    sexta-feira, 9 de junho de 2017 11:45
  • Se quiser criar uma tabela aí para testes, segue os códigos abaixo.

    ID	DataHoraInsercao	Nomes
    1	2017-01-01 08:00:10.000	João 
    2	2017-01-02 09:00:10.000	João 
    3	2017-01-03 10:00:10.000	Maria
    4	2017-01-04 11:00:10.000	Maria
    5	2017-01-05 12:00:10.000	Maria
    6	2017-01-06 13:00:10.000	Maria
    7	2017-01-07 14:00:10.000	Maria
    8	2017-01-08 15:00:10.000	José
    9	2017-01-09 16:00:10.000	José
    10	2017-01-10 17:00:10.000	José
    11	2017-01-11 18:00:10.000	Adriano
    12	2017-01-12 19:00:10.000	Adriano
    13	2017-01-13 20:00:10.000	Adriano
    14	2017-01-14 21:00:10.000	Adriano
    15	2017-01-15 22:00:10.000	Adriano
    16	2017-01-16 23:00:10.000	Adriano
    17	2017-01-17 00:00:10.000	Adriano
    18	2017-01-18 01:00:10.000	Adriano
    19	2017-01-19 02:00:10.000	João 
    20	2017-01-20 03:00:10.000	João 
    21	2017-01-21 04:00:10.000	Maria
    22	2017-01-22 05:00:10.000	Maria
    23	2017-01-23 06:00:10.000	Maria
    24	2017-01-24 07:00:10.000	Maria
    25	2017-01-25 08:00:10.000	Maria




    • Editado Silas.Soares sexta-feira, 9 de junho de 2017 18:40
    sexta-feira, 9 de junho de 2017 18:18
  • A tabela que postei ficou ruim, se quiser criar as tabela com estes dados:

    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[TabNomes](
    [ID] [bigint] IDENTITY(1,1) NOT NULL,
    [DataHoraInsercao] [datetime] NOT NULL,
    [Nomes] [nvarchar](255) NOT NULL
    ) ON [PRIMARY]

    INSERT INTO [dbo].[TabNomes]
               ([DataHoraInsercao]
               ,[Nomes])
         VALUES
    ('01/01/2017 08:00:10','João '),
    ('02/01/2017 09:00:10','João '),
    ('03/01/2017 10:00:10','Maria'),
    ('04/01/2017 11:00:10','Maria'),
    ('05/01/2017 12:00:10','Maria'),
    ('06/01/2017 13:00:10','Maria'),
    ('07/01/2017 14:00:10','Maria'),
    ('08/01/2017 15:00:10','José'),
    ('09/01/2017 16:00:10','José'),
    ('10/01/2017 17:00:10','José'),
    ('11/01/2017 18:00:10','Adriano'),
    ('12/01/2017 19:00:10','Adriano'),
    ('13/01/2017 20:00:10','Adriano'),
    ('14/01/2017 21:00:10','Adriano'),
    ('15/01/2017 22:00:10','Adriano'),
    ('16/01/2017 23:00:10','Adriano'),
    ('17/01/2017 00:00:10','Adriano'),
    ('18/01/2017 01:00:10','Adriano'),
    ('19/01/2017 02:00:10','João '),
    ('20/01/2017 03:00:10','João '),
    ('21/01/2017 04:00:10','Maria'),
    ('22/01/2017 05:00:10','Maria'),
    ('23/01/2017 06:00:10','Maria'),
    ('24/01/2017 07:00:10','Maria'),
    ('25/01/2017 08:00:10','Maria')

    sexta-feira, 9 de junho de 2017 18:20
  • Sim, tem um id para cada linha inserida.

    ID	DataHoraInsercao	Nomes
    1	2017-01-01 08:00:10.000	João 
    2	2017-01-02 09:00:10.000	João 
    3	2017-01-03 10:00:10.000	Maria
    4	2017-01-04 11:00:10.000	Maria
    5	2017-01-05 12:00:10.000	Maria
    6	2017-01-06 13:00:10.000	Maria
    7	2017-01-07 14:00:10.000	Maria
    8	2017-01-08 15:00:10.000	José
    9	2017-01-09 16:00:10.000	José
    10	2017-01-10 17:00:10.000	José
    11	2017-01-11 18:00:10.000	Adriano
    12	2017-01-12 19:00:10.000	Adriano
    13	2017-01-13 20:00:10.000	Adriano
    14	2017-01-14 21:00:10.000	Adriano
    15	2017-01-15 22:00:10.000	Adriano
    16	2017-01-16 23:00:10.000	Adriano
    17	2017-01-17 00:00:10.000	Adriano
    18	2017-01-18 01:00:10.000	Adriano
    19	2017-01-19 02:00:10.000	João 
    20	2017-01-20 03:00:10.000	João 
    21	2017-01-21 04:00:10.000	Maria
    22	2017-01-22 05:00:10.000	Maria
    23	2017-01-23 06:00:10.000	Maria
    24	2017-01-24 07:00:10.000	Maria
    25	2017-01-25 08:00:10.000	Maria
    

    • Editado Silas.Soares sexta-feira, 9 de junho de 2017 18:24
    sexta-feira, 9 de junho de 2017 18:21
  • Parece ser está função porém ele organiza pelos nomes para gerar o contador e eu precisava organizar pela data/hora inserção.

    Segue abaixo ó código que criei:

    SELECT 
        Dense_Rank() Over (Order by [Nomes]) as [Contador]
        ,Format([DataHoraInsercao],'dd/MM/yyyy HH:mm:ss') AS [DataHoraInsercao]
        ,[Nomes]
    FROM 
    	[dbo].[TabNomes]

    Resultado:

    Contador	DataHoraInsercao	Nomes
    1	11/01/2017 18:00:10	Adriano
    1	12/01/2017 19:00:10	Adriano
    1	13/01/2017 20:00:10	Adriano
    1	14/01/2017 21:00:10	Adriano
    1	15/01/2017 22:00:10	Adriano
    1	16/01/2017 23:00:10	Adriano
    1	17/01/2017 00:00:10	Adriano
    1	18/01/2017 01:00:10	Adriano
    2	19/01/2017 02:00:10	João 
    2	20/01/2017 03:00:10	João 
    2	01/01/2017 08:00:10	João 
    2	02/01/2017 09:00:10	João 
    3	08/01/2017 15:00:10	José
    3	09/01/2017 16:00:10	José
    3	10/01/2017 17:00:10	José
    4	03/01/2017 10:00:10	Maria
    4	04/01/2017 11:00:10	Maria
    4	05/01/2017 12:00:10	Maria
    4	06/01/2017 13:00:10	Maria
    4	07/01/2017 14:00:10	Maria
    4	21/01/2017 04:00:10	Maria
    4	22/01/2017 05:00:10	Maria
    4	23/01/2017 06:00:10	Maria
    4	24/01/2017 07:00:10	Maria
    4	25/01/2017 08:00:10	Maria



    sexta-feira, 9 de junho de 2017 18:44
  • Esses campos nomes  vem de uma tabela associativa (outra tabela)  onde cada nome tem um Id Fixo??

    ou seja a pessoa Maria tem uma PK unica pois nessa sua estrutura ora tem ID ora tem ID = 2 ora tem ID = 06

    no seu primeiro exemplo

    Contador Nomes
    1 João 
    1 João 
    2 Maria
    2 Maria
    2 Maria
    2 Maria
    2 Maria
    3 José
    3 José
    3 José
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    4 Adriano
    5 João 
    5 João 
    6 Maria
    6 Maria
    6 Maria
    6 Maria
    6 Maria


    Wesley Neves

    sexta-feira, 9 de junho de 2017 19:55
  • Deleted
    • Marcado como Resposta Silas.Soares segunda-feira, 12 de junho de 2017 11:40
    sexta-feira, 9 de junho de 2017 19:56
  • Obrigado pela ajuda, era exatamente isto que precisava.
    • Editado Silas.Soares segunda-feira, 12 de junho de 2017 11:40
    segunda-feira, 12 de junho de 2017 11:40