Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 860 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

//Tenho a Data abaixo  '12/31/2022'. Gostaria de criar de criar um filtro FIXO sempre com o ultimo dia e mês atual,

 

SELECT CODIGOATIVOPRINCIPAL, A.CODIGOCONTACONTABIL CONTADEPRECIACAO, A.CODIGO, A.DESCRICAO,
 A.VALORAQUISICAO,A.DTAQUISICAO,a.TXDEPANUAL,
 P.Nome NomeConta, P.CODIGOREDUZIDO, A.NUMEROPATRIMONIO, C.codigoreduzido as CentroCustoCReduzido, 
 coalesce((SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= '12/31/2022'), A.VALORABERTURA) as Abertura,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 2 AND
 D.REFERENCIA <= '12/31/2022') Baixa,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 1 AND
 D.REFERENCIA <= ' 12/31/2022') Depreciacao,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 1 AND
 D.REFERENCIA <= '12/31/2022') DEPRECIACAOTOTAL,
 (SELECT SUM(D.VALOR)
 FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 3 AND
 D.REFERENCIA <= '12/31/2022') BaixaDepreciacao,
 (SELECT SUM(E.BASECALCULOPIS) 
 FROM TABCREDPISCOFINSIMOBILIZADO E 
 WHERE idmaster = A.idmaster 
 AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) >= EXTRACT (month FROM CAST(null AS DATE)) AND 
  CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) >= EXTRACT  (YEAR FROM CAST(null AS DATE)) 

  AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) <= EXTRACT (month FROM CAST( '12/31/2022' AS DATE)) AND 
 CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) <= EXTRACT  (YEAR FROM CAST( '12/31/2022' AS DATE)) 

 ) AS VALORPIS, 
(SELECT SUM(E.BASECALCULOCOFINS) 
  FROM TABCREDPISCOFINSIMOBILIZADO E 
  WHERE idmaster = A.idmaster 
 AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) >= EXTRACT (month FROM CAST(null AS DATE)) AND 
  CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) >= EXTRACT  (YEAR FROM CAST(null AS DATE)) 

 AND 
 CAST(SUBSTRING (mesano FROM 1 FOR 2) AS smallint) <= EXTRACT (month FROM CAST('12/31/2022'  AS DATE)) AND 
 CAST(SUBSTRING (mesano FROM 4 FOR 4) AS smallint) <= EXTRACT  (YEAR FROM CAST('12/31/2022' AS DATE)) 
 ) AS VALORCOFINS 
 FROM TABATIVOIMOBILIZADO A
 LEFT JOIN TABPLANOCONTAS P
 ON (A.CODIGOCONTACONTABIL = P.CODIGO AND P.CODIGOPLANOCONTAS = 6) 
 left join tabcentrocusto C on a.codigocentrocusto = c.codigoconta and c.codigoplanocustos= 05
 WHERE  A.CODIGOEMPRESA = 1
 and A.CODIGOFILIAL = 1

 and ( (a.SITUACAODOBEM<>1) or (a.situacaodobem = 1 and a.datasituacao > '12/31/2022'))

 and a.dtabertura <= ' '12/31/2022''

 and A.SITUACAODOBEM <> 4

 order by A.CODIGOCONTACONTABIL, coalesce(CODIGOATIVOPRINCIPAL, a.codigo), a.CODIGOATIVOPRINCIPAL, A.CODIGOCONTACONTABIL,  A.CODIGO
 

  • Moderadores
Postado

No Firebird 4.0 pode usar a LAST_DAY()

select last_day(of month from current_date) from RDB$DATABASE

Em versões anteriores pode tentar algo como:

select cast('01.' || extract(month from dateadd(month, 1, current_date)) || '.' || extract(year from dateadd(month, 1, current_date)) as DATE) - 1 from RDB$DATABASE

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

Não estou conseguindo formatar no sql D.REFERENCIA <= '12/31/2022')

Para fixar sempre como ultima data do mês atual. alguma dica como ficaria no sql. versão 2.5

 

 

 

FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= '12/31/2022'), A.VALORABERTURA) as Abertura,

  • Membros Pro
Postado
12 minutos atrás, consultoria Soft disse:

Não estou conseguindo formatar no sql D.REFERENCIA <= '12/31/2022')

Para fixar sempre como ultima data do mês atual. alguma dica como ficaria no sql. versão 2.5

 

 

 

FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= '12/31/2022'), A.VALORABERTURA) as Abertura,

Olá bom dia,

Você pode fazer da seguinte forma:

--------------------------------------------------------------------------------------------

FROM TABDEPRECIACAO D
 WHERE D.CODIGOEMPRESA = A.CODIGOEMPRESA AND
 D.CODIGOFILIAL = A.CODIGOFILIAL AND
 D.CODIGOATIVO = A.CODIGO AND
 D.TIPOMOVIMENTO = 0 AND 
 D.REFERENCIA <= (select (cast('01.' ||
             extract(month from dateadd(month, 1, current_date)) || '.' ||
             extract(year from current_date) as date) - 1) as ULTIMO_DIA_MES_ATUAL)
from RDB$DATABASE)), A.VALORABERTURA) as Abertura,

 

--------------------------------------------------------------------------------------------

Se estiver em uma SP você pode criar uma variável para receber a informação do select do ultimo dia;

Atenciosamente,

  • 4 semanas depois ...
Postado (editado)

Faça o seguinte:

D.REFERENCIA <= (
   select
      dateadd(
         -1 day to dateadd(
            1 month to cast(extract(year from current_date) || '-' ||
            extract(month from current_date) || '-01' as date)
         )
      )
   from
      RDB$DATABASE
)

Vai solucionar pois:

select
   dateadd(
      -1 day to dateadd(
         1 month to cast(extract(year from current_date) || '-' ||
         extract(month from current_date) || '-01' as date)
      )
   )
from
   RDB$DATABASE

sempre vai retornar o último dia do mês vigente no formato date.

Foi testado na versão 2.5 do FireBird.

Editado por Roberto Henrique Borges Machado
  • Este tópico foi criado há 860 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.