Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DiFalco

Preencher gaps entre datas

Recommended Posts

Fala galera,

 

Tenho uma lista que retorna do banco os campos de data, sendo um acumulado mensal de 3 valores. Pode ser que ocorra do mês não ter nenhuma informação e ficar um buraco na lista, por exemplo:

 

Abr/2015 - 100,00 - 200,00 - 500,00

Jul/2015 - 100,00 - 200,00 - 500,00

 

eu precisava preencher Maio e Junho com zero nessa lista mas não tô conseguindo, alguém pode me ajudar com isso?

 

Abs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode retornar ditreto do banco de dados as datas preenchidas, não tem que processar nada para preencher isso. Qual banco você está utilizando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou mover o tópico para a área de banco de dados, talvez alguém lá tenha mais sucesso para te ajudar, pois neste caso o processamento na aplicação se torna bastante desnecessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha consulta está assim, Rafael:

SELECT	DataBaixa,
			SUM(ValorRecebido) ValorRecebido,
			SUM(ValorPago) ValorPago,
			SUM(Saldo) Saldo
	FROM (
			SELECT	CASE 
						WHEN MONTH(MF.DataBaixa) < 10 THEN '01/0' + CAST(MONTH(MF.DataBaixa) AS VARCHAR) + '/' + CAST(YEAR(MF.DataBaixa) AS VARCHAR) 
						ELSE '01/' + CAST(MONTH(MF.DataBaixa) AS VARCHAR) + '/' + CAST(YEAR(MF.DataBaixa) AS VARCHAR) 
					END DataBaixa ,
					SUM(CASE 
							WHEN MF.Valor > 0 THEN MF.Valor 
							ELSE 0 
						END) ValorRecebido, 
					SUM(CASE 
							WHEN MF.Valor < 0 THEN MF.ValorPago 
							ELSE 0 
						END) ValorPago,
					SUM(CASE 
							WHEN MF.Valor > 0 THEN MF.Valor 
							ELSE 0 
						END) - SUM(CASE 
										WHEN MF.Valor < 0 THEN MF.ValorPago 
										ELSE 0 
									END) Saldo
  			  FROM MovimentoFinanceiro MF
			  WHERE MF.EFPC = @EFPC
				AND MF.DataBaixa >= @DATAINICIO
				AND MF.DataBaixa <= @DATAFIM
		   GROUP BY MF.DataBaixa
	) T
	GROUP BY DataBaixa
	ORDER BY DataBaixa

Compartilhar este post


Link para o post
Compartilhar em outros sites

não se se você já conseguiu resolver mas o que eu posso sugerir:

 

SELECT CONVERT(VARCHAR(19), a.date_val, 101) [DataBaixa], isnull(b.Saldo,0) [Saldo], isnull(b.ValorPago,0) [ValorPago], isnull(b.ValorRecebido,0) [ValorRecebido] from 
	(SELECT DATEADD(mm, number, '2015-01-01') AS date_val
						FROM master.dbo.spt_values
						WHERE type = 'P'
						AND number BETWEEN 0 AND 11
	) A
	left join
	(
		SELECT	DataBaixa,
				SUM(ValorRecebido) ValorRecebido,
				SUM(ValorPago) ValorPago,
				SUM(Saldo) Saldo
		FROM (
				SELECT	DataBaixa,
						SUM(CASE 
								WHEN MF.Valor > 0 THEN MF.Valor 
								ELSE 0 
							END) ValorRecebido, 
						SUM(CASE 
								WHEN MF.Valor < 0 THEN MF.ValorPago 
								ELSE 0 
							END) ValorPago,
						SUM(CASE 
								WHEN MF.Valor > 0 THEN MF.Valor 
								ELSE 0 
							END) - SUM(CASE 
											WHEN MF.Valor < 0 THEN MF.ValorPago 
											ELSE 0 
										END) Saldo
  				  FROM MovimentoFinanceiro MF
			   GROUP BY MF.DataBaixa
		) T
		GROUP BY DataBaixa
) B on A.date_val = B.DataBaixa
no lugar da tabela do sistema, você também poderia usar uma propria

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.