none
Problema como DENSE_RANK - Sem ordenação correta RRS feed

  • Pergunta

  • Boa tarde pessoal.

    Vejam se podem me ajudar.

    Tenho uma consulta contábil para geração de valores por conta de débito e crédito e nela utilizo o DENSE_RANK para agrupamento de valores repetidos, gerando dessa forma valores iguais para contas de débito e crédito e ordenando. Porém, precisei inserir um CASE para quando o tipo de conta for 1 ou 2 ele retornar um campo em branco e caso contrário retornar o centro de custo, mas após essa alteração na consulta os valores já não aparecem 100% corretos, pois algumas linhas ainda retorna o agrupamento correto e outras não.

    Reparem abaixo que da linha 335 a 339 o SEQ se repete por várias vezes e as linhas 172 e 173 não estão agrupadas conforme linhas 349 até 352 que estão corretas, agrupas os resultados de 2 em 2 mesmo retornando valor na coluna CCUSTO.

    Resultado da consulta

    Essa é a consulta que estou utilizando

    WITH
    Consulta as
    (
    SELECT 
            
           Substring(LCT_DssHistoricoMontado,1,25) as historico,
           Substring(LCT_DssQuebraForcada,1,4) AS COMP_CODE,
           '' AS SEGMENT,
           Substring(LCT_DssContaMontada,16,4) AS BUS_AREA,
    	   CASE WHEN Substring(LCT_DssContaMontada,1,1) = 1 OR Substring(LCT_DssContaMontada,1,1) = '2' THEN '' 
    	   ELSE Substring(LCT_DssContaMontada,16,15)  END AS CCUSTO,
    	   Substring(LCT_DssContaMontada,1,15) AS CONTA,
    	   LCT_CdiTipoLancamentoContabil, 
           LCT_DtdLancamento,
           LCT_DtiAno,
           sum (LCT_VlnLancamento) as LCT_VlnLancamento
    FROM LancamentosContabeis LancamentosContabeis
    
    GROUP BY 
           Substring(LCT_DssQuebraForcada,1,4),
           Substring(LCT_DssContaMontada,16,15), 
           Substring(LCT_DssContaMontada,1,15),
    
    	   Substring(LCT_DssContaMontada,1,1),
    	   Substring(LCT_DssContaMontada,16,4),
    
           LCT_DssHistoricoMontado,
           LCT_CdiTipoLancamentoContabil, 
           LCT_DtiAno,
           LCT_DtdLancamento
           ),
    
    
    ConsultaSeq as (
    SELECT *,
           Seq= DENSE_rank() over (order by Historico,COMP_CODE,LCT_DtdLancamento,LCT_VlnLancamento desc)
      from Consulta
    )
    
    SELECT *
      from ConsultaSeq
      order by Seq, LCT_CdiTipoLancamentoContabil;

    Saberiam dizer o que poderia estar errado nessa consulta? Preciso que todos os resultados apareçam como no exemplo abaixo:

    Obrigado!!!

    segunda-feira, 23 de abril de 2018 17:41

Respostas

  • Deleted
    terça-feira, 24 de abril de 2018 19:11
  • A impressão é que o código terá que ser reescrito. Mas ainda não compreendi como a tabela LancamentosContabeis armazena as informações.

    Dúvidas:

    • No caso da tabela LancamentosContabeis, como é possível encontrar os lançamentos de débito e de crédito que se refiram a um mesmo movimento?
    • Para cada partida há uma única contrapartida ou podem existir vários lançamentos de contrapartida para uma partida (e vice-versa)?
    • A coluna LCT_DssContaMontada possui dois subcampos: Conta e Centro de custo; é isto?
    • O primeiro algarismo da conta tem algum significado especial?
    • A coluna LCT_CdiTipoLancamentoContabil possui somente os valores 1 e 2? O que esses valores significam?
    • O objetivo é agrupar os lançamentos de diversos movimentos semelhantes?



    e-mail       José Diz     Belo Horizonte, MG - Brasil



    Boa noite José.

    Desculpe a demora para responder, eventos externos dos quais me atrapalharam e não consegui retomar o assunto, mas então, consegui resolver o problema fazendo a tratativa dos dados no script da aplicação. De qualquer forma agradeço atenção!!!

    Muito obrigado!!!!


    • Marcado como Resposta OHMLE quinta-feira, 3 de maio de 2018 22:59
    quinta-feira, 3 de maio de 2018 22:59

Todas as Respostas

  • Deleted
    segunda-feira, 23 de abril de 2018 22:50
  • Bom dia Jose.

    Segue print das informações das colunas LCT_DssQuebraForcada e LCT_DssContaMontada

    terça-feira, 24 de abril de 2018 11:21
  • Deleted
    terça-feira, 24 de abril de 2018 19:11
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 2 de maio de 2018 18:57
    Moderador
  • A impressão é que o código terá que ser reescrito. Mas ainda não compreendi como a tabela LancamentosContabeis armazena as informações.

    Dúvidas:

    • No caso da tabela LancamentosContabeis, como é possível encontrar os lançamentos de débito e de crédito que se refiram a um mesmo movimento?
    • Para cada partida há uma única contrapartida ou podem existir vários lançamentos de contrapartida para uma partida (e vice-versa)?
    • A coluna LCT_DssContaMontada possui dois subcampos: Conta e Centro de custo; é isto?
    • O primeiro algarismo da conta tem algum significado especial?
    • A coluna LCT_CdiTipoLancamentoContabil possui somente os valores 1 e 2? O que esses valores significam?
    • O objetivo é agrupar os lançamentos de diversos movimentos semelhantes?



    e-mail       José Diz     Belo Horizonte, MG - Brasil



    Boa noite José.

    Desculpe a demora para responder, eventos externos dos quais me atrapalharam e não consegui retomar o assunto, mas então, consegui resolver o problema fazendo a tratativa dos dados no script da aplicação. De qualquer forma agradeço atenção!!!

    Muito obrigado!!!!


    • Marcado como Resposta OHMLE quinta-feira, 3 de maio de 2018 22:59
    quinta-feira, 3 de maio de 2018 22:59
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    Desculpe Filipe, ocorreram alguns problemas que me impediram de retomar o assunto, mas já resolvi.

    Obrigado!

    quinta-feira, 3 de maio de 2018 23:00
  • Deleted
    quinta-feira, 3 de maio de 2018 23:14