Ir para conteúdo
  • 0

Duplicar linhas com nova data


Cristiane galdino da silva

Pergunta

8 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
46 minutos atrás, Cristiane galdino da silva disse:

Gente, boa tarde.

Tenho uma consulta SQL que me retorna a tabela, mas quero que fique como a tabela 2.

Quero que o primeiro registro seja repetido, acrescentando um mês a data, até a data da proxima alteração.

Sabem o que posso usar para faser isso?

 

image.png.3e7a72269611633a6992580180b39a5b.png

Qual sgdb você está utilizando?

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Exemplo de aplicação sql server:

Explicação:

1 - DateSeries CTE: Gera uma série de datas começando em '2023-04-01' e incrementando mensalmente até '2024-01-01'.
2 - Data CTE: Define os dados fornecidos no exemplo.
3 - Consulta principal: Junta as datas geradas com os dados originais, garantindo que as datas sejam maiores ou iguais à data de alteração de cada chapa.
4 - ORDER BY: Ordena o resultado por Chapa e data.
5 - OPTION (MAXRECURSION 0): Permite que a CTE recursiva execute sem o limite padrão de 100 recursões.

WITH DateSeries AS (
    SELECT CAST('2023-04-01' AS DATE) AS Date
    UNION ALL
    SELECT DATEADD(MONTH, 1, Date)
    FROM DateSeries
    WHERE DATEADD(MONTH, 1, Date) <= '2024-01-01'
),
Data AS (
    SELECT 'SPV02031008' AS CentroCusto, 24694 AS Chapa, CAST('2023-04-01' AS DATE) AS AlteracaoCentroCusto
    UNION ALL
    SELECT 'SPV0204002', 24694, CAST('2024-01-01' AS DATE)
)
SELECT 
    d.CentroCusto, 
    d.Chapa, 
    ds.Date AS AlteracaoCentroCusto
FROM 
    Data d
JOIN 
    DateSeries ds 
ON 
    ds.Date >= d.AlteracaoCentroCusto
ORDER BY 
    d.Chapa, ds.Date
OPTION (MAXRECURSION 0);

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
Postado (editado)

Esqueci de mencionar.

A TI não quer fazer nada no banco de dados.

Eu uso um sistema que me permite fazer as querys, mas não consigo criar CTEs , TB temporária.

 

Pensei em fazer algo dentro do Power Query também, mas ainda não consegui chegar a uma solução.

Editado por Cristiane galdino da silva
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
15 horas atrás, Cristiane galdino da silva disse:

Esqueci de mencionar.

A TI não quer fazer nada no banco de dados.

Eu uso um sistema que me permite fazer as querys, mas não consigo criar CTEs , TB temporária.

 

Pensei em fazer algo dentro do Power Query também, mas ainda não consegui chegar a uma solução.

Tenho essa solução tente replicar seu conjunto de dados:
 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
2 horas atrás, Alex Pereira disse:

Tenho essa solução tente replicar seu conjunto de dados:
 

 

Alex, bom dia.

Obrigada pela ajuda. 

O código M que vc compartilhou comigo está dando estouro de pilha. Acredito eu que seja porque a tabela original possui 13000 linhas.

Como eu quero que seja retornada apenas uma data em cada mês, troquei a duração para 30, porque só preciso saber o mês e o ano que teve a alteração.

Vou te enviar o arquivo em Excel, pode ver se consegue me ajudar?

 

Alteracao_centro_custo.xlsx

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Você quer que repita só nos casos numero de matricula é igual?  Ex:

SPV01000001    14    18/03/2024
SPV02062002    14    01/01/2013

Resultado esperado:

SPV02062002    14    01/01/2013
SPV02062002    14    01/02/2013
SPV02062002    14    01/03/2013
.
.
.
SPV02062002    14    01/01/2024
SPV02062002    14    01/02/2024
SPV01000001    14    18/03/2024

image.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
54 minutos atrás, Alex Pereira disse:

Você quer que repita só nos casos numero de matricula é igual?  Ex:

SPV01000001    14    18/03/2024
SPV02062002    14    01/01/2013

Resultado esperado:

SPV02062002    14    01/01/2013
SPV02062002    14    01/02/2013
SPV02062002    14    01/03/2013
.
.
.
SPV02062002    14    01/01/2024
SPV02062002    14    01/02/2024
SPV01000001    14    18/03/2024

image.png

Isso mesmo.

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...