Apresentar histórico em data em Colunas de meses
01/07/2017
0
Tenho uma tabela com histórico salarial de empregados e quero apresentar o salário em todos os meses de um período mesmo que não tenha histórico para o respectivo mês:
Dados:
01/01/2016 - 3.200
01/05/2016 - 4.000
01/10/2016 - 5.400
Apresentação dos Dados:
jan fev mar abr mai jun jul ago set out nov dez
3200 3200 3200 3200 4000 4000 4000 4000 4000 5400 5400 5400r
Note que no mês há histórico salarial é apresentado o salário anterior
Obrigado.
Juarez Cordeiro
Posts
01/07/2017
Fabiano Carvalho
Voce pode fazer utilizar pivot!
03/07/2017
Juarez Cordeiro
O Banco de Dados é SQL Server.
Se usar o Pivot sim, nesse caso faria a conversão de Data para mês e até ai tudo bem.
Porém não consegui preencher os meses que não tem registro de histórico de datas.
Obrigado.
04/07/2017
Juarez Cordeiro
Alguém consegue dar um opinião sobre o tema?
Obrigado,
05/07/2017
Lincon Silva
Vi agora teu post, a unica forma que me veio à mente agora foi adicionando os itens uma uma tabela temporária (de qualquer tipo) e depois realizando a leitura da mesmo, com a nova tabela temporária tu adiciona o PIVOT Table pra ficar da forma que você quer, vê se te atende, qualquer coisa amanhã vejo com mais calma:
-- Quantidade de Meses que vai rodar no Whille DECLARE @MESES INT = (DATEDIFF(MONTH, (SELECT MIN(DATA) FROM [TUA_TABELA]),(SELECT MAX(DATA) FROM [TUA_TABELA]))) -- Criando uma tabela temporária com dois valores para fins de teste DECLARE @TABELA_TEMPORARIA TABLE (DATA DATETIME, VALOR MONEY) -- Criando um contador pra ser usado no While DECLARE @CONT INT = 0 -- Pegando a primeira data da sequencia DECLARE @DATA_INICIO DATETIME = (SELECT MIN(DATA) FROM [TUA_TABELA]) -- Inicio While WHILE(@CONT <= @MESES) BEGIN -- Inserindo na temporária o valor da tabela, caso seja null ele adiciona o valor criado para suprir os nulos INSERT INTO @TABELA_TEMPORARIA(DATA,VALOR) VALUES( DATEADD(MONTH, @CONT,@DATA_INICIO), ISNULL( (SELECT TOP 1 VALOR FROM [TUA_TABELA] WHERE (DATA = DATEADD(MONTH, @CONT,@DATA_INICIO))), (SELECT TOP 1 VALOR FROM @TABELA_TEMPORARIA ORDER BY DATA DESC)) ) SET @CONT = @CONT + 1 END SELECT * FROM @TABELA_TEMPORARIA
Abraço
05/07/2017
Lincon Silva
Abraços,
16/07/2017
Juarez Cordeiro
Volto às atividades profissionais amanhã e fiquei muito feliz me respondeu, amanhã vou tentar a sua sugestão e te reporto, Muito Obrigado.
Abraços,
Juarez Cordeiro
Clique aqui para fazer login e interagir na Comunidade :)