Buscar apenas últimos dias dos meses SQL
10/10/2017
0
Porém o que interessa pra mim é apenas o valor acumulado do último dia de cada mês.
Ex: eu preciso que me traga apenas os valores dos dias 31/01, 28/02, 31/03, 30/04, 31/05 e assim por diante.
Desde já agradeço a compreensão
Gustavo
Posts
10/10/2017
Venancio Alves
10/10/2017
Luiz Santos
Não entendi muito bem o que você precisa, mas se estiver usando a versão 2012 ou superior do SQL Server, você tem a função EOMONTH:
SELECT EOMONTH(GETDATE())
Já versões anteriores, temos esse método, um pouco comprido, mas que também funciona:
SELECT DATEADD(DAY, -1, CONVERT(VARCHAR(8), YEAR(DATEADD(MONTH, 1, GETDATE())) * 10000 + MONTH(DATEADD(MONTH, 1, GETDATE())) * 100 + 1, 112))
Espero ter conseguido te ajudar.
Grande abraço
10/10/2017
Luiz Santos
Segue uma forma um pouco menos bisonha que a minha.
SELECT DATEADD(DAY,-(DAY(DATEADD(MONTH,1,GETDATE()))), DATEADD(MONTH,1,GETDATE()))
10/10/2017
Gustavo
SELECT Empresa_dtc, Conta_dtc, MAX (UltDataSaldo_dtc) AS UltimoSaldodoMes
FROM(
SELECT
Empresa_sdcc AS Empresa_dtc, Banco_sdcc AS Banco_dtc, Conta_sdcc AS Conta_dtc, MAX(Data_sdcc) as UltDataSaldo_dtc
FROM SaldoConta
LEFT JOIN Bancos ON
Banco_sdcc = Numero_banco
LEFT JOIN Ccorrente ON
Empresa_sdcc = Empresa_banco
AND Banco_sdcc = Ccorrente.Numero_banco
AND Conta_sdcc = Conta_banco
WHERE DATEDIFF(Month, Data_sdcc, GETDATE()) = 1 AND
Empresa_sdcc IN('44')AND AtInat_banco = 0
GROUP BY Empresa_sdcc, Banco_sdcc, Conta_sdcc, Tipo_banco
) AS ULTIMOSALDO
GROUP BY Conta_dtc, Empresa_dtc
UNION
SELECT Empresa_dtc, Conta_dtc, MAX (UltDataSaldo_dtc) AS UltimoSaldodoMes
FROM(
SELECT
Empresa_sdcc AS Empresa_dtc, Banco_sdcc AS Banco_dtc, Conta_sdcc AS Conta_dtc, MAX(Data_sdcc) as UltDataSaldo_dtc
FROM SaldoConta
LEFT JOIN Bancos ON
Banco_sdcc = Numero_banco
LEFT JOIN Ccorrente ON
Empresa_sdcc = Empresa_banco
AND Banco_sdcc = Ccorrente.Numero_banco
AND Conta_sdcc = Conta_banco
WHERE DATEDIFF(Month, Data_sdcc, GETDATE()) = 2 AND
Empresa_sdcc IN('44')AND AtInat_banco = 0
GROUP BY Empresa_sdcc, Banco_sdcc, Conta_sdcc, Tipo_banco
) AS ULTIMOSALDO
GROUP BY Conta_dtc, Empresa_dtc
UNION
SELECT Empresa_dtc, Conta_dtc, MAX (UltDataSaldo_dtc) AS UltimoSaldodoMes
FROM(
SELECT
Empresa_sdcc AS Empresa_dtc, Banco_sdcc AS Banco_dtc, Conta_sdcc AS Conta_dtc, MAX(Data_sdcc) as UltDataSaldo_dtc
FROM SaldoConta
LEFT JOIN Bancos ON
Banco_sdcc = Numero_banco
LEFT JOIN Ccorrente ON
Empresa_sdcc = Empresa_banco
AND Banco_sdcc = Ccorrente.Numero_banco
AND Conta_sdcc = Conta_banco
WHERE DATEDIFF(Month, Data_sdcc, GETDATE()) = 3 AND
Empresa_sdcc IN('44')AND AtInat_banco = 0
GROUP BY Empresa_sdcc, Banco_sdcc, Conta_sdcc, Tipo_banco
) AS ULTIMOSALDO
GROUP BY Conta_dtc, Empresa_dtc
Dados retornados:
Empresa_dtc Conta_dtc UltimoSaldodoMes
44 0006095-0 2017-07-31 00:00:00.000
44 0006095-0 2017-08-18 00:00:00.000
44 0006095-0 2017-09-20 00:00:00.000
44 0013065741-3 2017-07-31 00:00:00.000
44 0013065741-3 2017-08-04 00:00:00.000
44 0013065741-3 2017-09-11 00:00:00.000
44 013065741-3 2017-07-18 00:00:00.000
44 13060544-7 2017-07-31 00:00:00.000
44 13060544-7 2017-08-31 00:00:00.000
44 13060544-7 2017-09-29 00:00:00.000
44 13065741-3 2017-07-31 00:00:00.000
44 13065741-3 2017-08-31 00:00:00.000
44 13065741-3 2017-09-29 00:00:00.000
44 6095-0 2017-07-31 00:00:00.000
44 6095-0 2017-08-31 00:00:00.000
44 6095-0 2017-09-29 00:00:00.000
44 6919-1 2017-09-29 00:00:00.000
Clique aqui para fazer login e interagir na Comunidade :)