Usuário com melhor resposta
Problema como DENSE_RANK - Sem ordenação correta

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.
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!!!
Respostas
-
Deleted
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 2 de maio de 2018 18:57
-
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?
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
Todas as Respostas
-
-
-
Deleted
- Marcado como Resposta Filipe B CastroModerator quarta-feira, 2 de maio de 2018 18:57
-
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.
-
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?
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
-
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!
-