Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×

luisgustavogomes

Moderadores
  • Total de itens

    482
  • Registro em

  • Última visita

  • Dias Ganho

    64

Posts postados por luisgustavogomes

  1. Bom dia 

    Vou incluir uma variação que resulta mês a mês.

     

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    SET NOCOUNT ON;

    DECLARE @CODCOLIGADA INT = 1;
    DECLARE @DATAINICIAL DATETIME = '2023-01-01' 
    DECLARE @DATAFINAL   DATETIME = '2023-12-31' 

    DECLARE @DATAFINALAJS  DATETIME = DATEADD(DAY,1, @DATAFINAL)

    ;WITH TAB_DATAS
    AS
    (
        SELECT @DATAINICIAL AS 'DT'
        
        UNION ALL 

        SELECT DATEADD(DAY,1,DT)
        FROM TAB_DATAS
        WHERE DT < @DATAFINAL

    )
    , TAB_ANO
    AS
    (
        SELECT DATETIMEFROMPARTS(YEAR(T.DT), MONTH(T.DT), DAY(T.DT),23,59,59,997) AS 'DT',YEAR(T.DT) AS 'ANO' , MONTH(T.DT) AS 'MES'
        FROM 
        (
            SELECT DISTINCT EOMONTH(DATEFROMPARTS(YEAR(DT), MONTH(DT),1),0) AS 'DT'
            FROM TAB_DATAS
        ) T
    )
    SELECT 
         T.ANO
        ,T.DT
        ,P.CODCOLIGADA
        ,P.CHAPA
        ,P.DATAMUDANCA
        ,P.NOVASITUACAO
        ,F.CODFUNCAO_HIST
        ,F.NOME_FUNCAO_HIST
    FROM TAB_ANO T
    CROSS APPLY 
    (
        SELECT 
             P2.CODCOLIGADA 
            ,P2.CHAPA 
            ,P2.DATAMUDANCA
            ,P2.NOVASITUACAO
        FROM
        (
            SELECT 
                 P1.CODCOLIGADA 
                ,P1.CHAPA 
                ,P1.DATAMUDANCA
                ,P1.NOVASITUACAO
                ,ROW_NUMBER() OVER (PARTITION BY P1.CODCOLIGADA, P1.CHAPA ORDER BY P1.CODCOLIGADA, P1.CHAPA, P1.DATAMUDANCA DESC ) AS 'SEQ'
            FROM DBO.PFHSTSIT P1
            WHERE P1.CODCOLIGADA = @CODCOLIGADA 
            AND P1.DATAMUDANCA <= T.DT
        ) P2
        WHERE P2.SEQ = 1 
    ) P 
    OUTER APPLY 
    (
      SELECT 
             H.CODCOLIGADA
            ,H.CODFUNCAO AS 'CODFUNCAO_HIST'
            ,F.NOME AS 'NOME_FUNCAO_HIST'
          FROM DBO.PFHSTFCO H
          JOIN DBO.PFUNCAO  F ON (H.CODCOLIGADA = F.CODCOLIGADA AND H.CODFUNCAO = F.CODIGO)
         WHERE H.CODCOLIGADA = p.CODCOLIGADA
           AND H.CHAPA= P.CHAPA
           AND H.DTMUDANCA = (SELECT MAX(HH.DTMUDANCA)
                                FROM DBO.PFHSTFCO HH 
                               WHERE HH.CODCOLIGADA = H.CODCOLIGADA 
                                 AND HH.CHAPA = H.CHAPA
                                 AND HH.DTMUDANCA <= T.DT)

    ) F 
    WHERE P.NOVASITUACAO NOT IN ('D')
    ORDER BY T.ANO, P.CHAPA 
    OPTION (MAXDOP 1, MAXRECURSION 0)

     

  2. @jasson nascimento, bom dia! 

     

    Segue uma possibilidade em SQLServer... 

     

    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
    SET NOCOUNT ON;
    
    DECLARE @CODCOLIGADA INT = 1;
    DECLARE @DATAINICIAL DATETIME = '2008-01-01' 
    DECLARE @DATAFINAL   DATETIME = '2023-12-31' 
    
    DECLARE @DATAFINALAJS  DATETIME = DATEADD(DAY,1, @DATAFINAL)
    
    ;WITH TAB_DATAS
    AS
    (
    	SELECT @DATAINICIAL AS 'DT'
    	
    	UNION ALL 
    
    	SELECT DATEADD(DAY,1,DT)
    	FROM TAB_DATAS
    	WHERE DT < @DATAFINAL
    
    )
    , TAB_ANO
    AS
    (
    	SELECT  DATETIMEFROMPARTS(ANO,12,31,23,59,59,997) AS 'DT', ANO
    	FROM 
    	(
    		SELECT DISTINCT YEAR(DT) AS 'ANO' 
    		FROM TAB_DATAS
    	) T
    ) 
    SELECT 
    	 T.ANO
    	,T.DT
    	,P.CODCOLIGADA
    	,P.CHAPA
    	,P.DATAMUDANCA
    	,P.NOVASITUACAO
    	,F.CODFUNCAO_HIST
    	,F.NOME_FUNCAO_HIST
    FROM TAB_ANO T
    CROSS APPLY 
    (
    	SELECT 
    		 P2.CODCOLIGADA 
    		,P2.CHAPA 
    		,P2.DATAMUDANCA
    		,P2.NOVASITUACAO
    	FROM
    	(
    		SELECT 
    			 P1.CODCOLIGADA 
    			,P1.CHAPA 
    			,P1.DATAMUDANCA
    			,P1.NOVASITUACAO
    			,ROW_NUMBER() OVER (PARTITION BY P1.CODCOLIGADA, P1.CHAPA ORDER BY P1.CODCOLIGADA, P1.CHAPA, P1.DATAMUDANCA DESC ) AS 'SEQ'
    		FROM DBO.PFHSTSIT P1
    		WHERE P1.CODCOLIGADA = @CODCOLIGADA 
    		AND P1.DATAMUDANCA <= T.DT
    	) P2
    	WHERE P2.SEQ = 1 
    ) P 
    OUTER APPLY 
    (
      SELECT 
    		 H.CODCOLIGADA
    		,H.CODFUNCAO AS 'CODFUNCAO_HIST'
    		,F.NOME AS 'NOME_FUNCAO_HIST'
          FROM DBO.PFHSTFCO H
    	  JOIN DBO.PFUNCAO  F ON (H.CODCOLIGADA = F.CODCOLIGADA AND H.CODFUNCAO = F.CODIGO)
         WHERE H.CODCOLIGADA = p.CODCOLIGADA
    	   AND H.CHAPA= P.CHAPA
           AND H.DTMUDANCA = (SELECT MAX(HH.DTMUDANCA)
                                FROM DBO.PFHSTFCO HH 
                               WHERE HH.CODCOLIGADA = H.CODCOLIGADA 
    						     AND HH.CHAPA = H.CHAPA
                                 AND HH.DTMUDANCA <= T.DT)
    
    ) F 
    WHERE P.NOVASITUACAO NOT IN ('D')
    ORDER BY T.ANO, P.CHAPA 
    OPTION (MAXDOP 1, MAXRECURSION 0)

     

     

    Essa query tem a abordagem de verificar o histórico de situação do funcionário! Logo, pode ter supressas... como eu tive de históricos incorretos...

     

    /*

    p/s

    Vou deixar aqui um outra formar de buscar os registros por grupo, para histórico.

    SELECT TOP 1 WITH TIES 
         CODCOLIGADA 
        ,CHAPA 
        ,DATAMUDANCA
        ,NOVASITUACAO
    FROM DBO.PFHSTSIT 
    WHERE CODCOLIGADA = 1
    ORDER BY ROW_NUMBER() OVER (PARTITION BY CODCOLIGADA, CHAPA ORDER BY CODCOLIGADA, CHAPA, DATAMUDANCA DESC )

    */

     

    Espero lhe ajudar.

    Abraços 

     

     

     

    • Gostei 1
  3. @Guilherme José Silva, Bom dia, tudo bem? 

     

    Ontem ao ler seu post, comecei a procurar e fazer alguns testes no Microsoft.Word utilizando alguns formulários e funcionou muito bem!

    Testei importando do Word para a aplicação, nada....

    Depois fui verificar a documentação da devexpress e tem como, vide documentação Campos em documentos Rich Text | Controles WinForms | Documentação do DevExpress, logo como o código é utilizado na aplicação, seus controles são customizado e não temos como alterar.

     

    Como solução, tem duas hipóteses, a primeira utilizando campo da base e fazer a operação conforme, comentastes...  caso esteja utilizando o SQLSERVER, pode criar campos na consulta já formado com a função FORMAT, FORMAT (Transact-SQL) - SQL Server | Microsoft Learn, tens alguns exemplos de como utilizar, caso não consiga alguma, por favor, informar, como dica, caso utilize essa última abordagem, pode sempre deixar o campo nativo e criar um outro formatado, por exemplo... campo DATAEMISSAO, FORMAT(DATAEMISSAO, 'dd/MM/yyyy') AS 'STR_DATAEMISSAO'.

    Espero lhe ajudar.

     

    Abraços.

     

     

  4. @Carlos Rogerio Das Dores, boa tarde!

    Para fazer isso, você utilizara o conceito de PIVOT na estrutura da query para montá-la... No SQLServer existe duas formas, fixa, ou seja, você saber quantas colunas irá criar e/ou dinâmica que precisa executar de instruções de procedures, logo para utilizar dentro na aplicação, tens que tratar com uma criação de tabela, utilizando uma PROC anexo a consulta SQL.

    Deixo meus exemplos

    T-SQL/QUERIES/PIVOT.sql at master · luisgustavogomes/T-SQL · GitHub

    T-SQL/QUERIES/PIVOT DINAMICO.sql at master · luisgustavogomes/T-SQL · GitHub

    Caso não consigas, pode nos informar que lhe ajudamos.

     

    Abraços.

    • Gostei 3
  5. @Mônica Alves, boa tarde!

    Existem duas formas de identificar esse agrupamento de partidas... 

     

    1º Utilizando um query para efetuar a posição do Lote contábil a nível de evento e encargo, sobre a movimentação de um mês;

    2º Criar uma query buscando os default contábeis dos eventos e encargos que estão configurados "agora", pois essa informação não tem o histórico.

     

    Abraços.

     

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.