Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Criar um coluna calculada baseada em regras(Controle de Pneu)

Olá, bom dia! Tudo bem? Estou com uma dúvida em gerar uma coluna de tratamento de dado para em uma consulta para o banco de DW, pode me ajudar. Tenho uma tabela de Pneus onde tenho as seguintes regras para seguir para gerar uma coluna de KM Rodado:

1 - A coluna de Km Rodado tem que assumir o valor "0" e mudando conforme a diferença do evento anterior com o atual. 2 - Quando o Pneu realiza uma nova "Instalação"(Tipo de movimento que coloca para outro veiculo) ele tem que desconsiderar o KM de Referência da coluna "QT_KM" e assumir "0" com o novo valor e após isso seguir a primeira setando a diferença entre o anterior e o atual.

Segue em anexo imagem no qual explico o que quero gerar e o segundo anexo contém o relatório gerado pelo o sistema.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Att,

Mateus Silva

1 resposta
solução!

Gente encontrei a solução, segue documentação utilizada e código.

https://www.sqlshack.com/sql-lag-function-overview-and-examples/

SELECT CD_EMPRESA , CD_PNEU , DH_EVENTO , CD_EVENTO , QT_KM , KM_ROD_VEI , LAG(QT_KM,1) OVER ( PARTITION BY CD_PNEU ORDER BY DH_EVENTO ) KM_ANTERIOR

, CASE WHEN QT_KM = 0 OR QT_KM = KM_ROD_VEI THEN 0 ELSE QT_KM - LAG(QT_KM,1) OVER ( PARTITION BY CD_PNEU ORDER BY DH_EVENTO ) END KM_RODADO

FROM stg.STG_GUB_HISTPNEU WHERE CD_PNEU = '011920' ORDER BY DH_EVENTO