Estou com um situação nessa consulta, venho pedir auxilio aqui no grupo para tentar resolver,
Nessa imagem apresenta os dados de uma consulta, porem preciso calcular a diferença de dias entre cada situação ou seja, na coluna Dias seria a diferença entre as datas dos campos Data e DtEmissao, agora preciso calcular a diferença entre os dias do Campo Dias, exemplo:
Numero| Dias | Diferenca_dias 554 7 null
554 12 (12-7) 5
554 23 (23-12) 11
554 23 (23-23) 0 590 8 Null
590 9 (9-8) 1 595 13 Null
Obs: para os valores Null poderia repedir os valores da coluna dias ⚠️ Outro detalhe: tentei utilizar a função LAG porem sem sucesso, pois nossa versão do banco é 2005 🫣
SELECT
D.Numero
,D.DtEmissao
,D.CodigoSituacao
,C.Descricao as Cargo
,Data
,INS.Descricao as Situação
,P.NomeUsual as Responsavel
,CASE WHEN ins.Descricao = 'Liberado' THEN
DATEDIFF(DAY,D.DtMovimento, ISL.Data)
WHEN ins.Descricao = 'Liberado' THEN
DATEDIFF(DAY,ISL.Data,ISL.Data)
ELSE DATEDIFF (day,D.DtEmissao,ISL.Data)
END as Dias
,null as Diferenca_Dias
--,LAG(ISL.Data,1) OVER (PARTITION BY D.Numero ORDER BY D.Numero, ISL.Data) as Numero_Dias
FROM
MotivoContratacaoCandidato MCC
LEFT JOIN RequisicaoCandidato RC
ON RC.OIDMotivoContratacaoCandidato = MCC.OIDMotivoContratacaoCandidato
LEFT JOIN RequisicaoCandidatoMov RCM
ON RC.OIDdocumento = RCM.OIDRequisicaoCandidatoMov
LEFT JOIN Documento D
on D.OIDdocumento = RC.OIDdocumento
LEFT JOIN Cargo C
ON C.OIDCargo = Rc.oidcargo
LEFT JOIN IndicativoSituacaoLog ISL
on D.OIDDocumento = ISL.OIDDocumento
LEFT JOIN IndicativoSituacao INS
on ins.OIDIndicativoSituacao = ISL.OIDIndicativoSituacao
LEFT JOIN Pessoa P
ON P.OIDPessoa = ISL.OIDResponsavel
WHERE YEAR(D.DtEmissao) = 2024 AND D.Numero in ('590','595','554','521')
Pergunta
Adriano Anacleto
Olá Pessoal,
Estou com um situação nessa consulta, venho pedir auxilio aqui no grupo para tentar resolver,
Nessa imagem apresenta os dados de uma consulta, porem preciso calcular a diferença de dias entre cada situação ou seja, na coluna Dias seria a diferença entre as datas dos campos Data e DtEmissao, agora preciso calcular a diferença entre os dias do Campo Dias, exemplo:
Numero| Dias | Diferenca_dias
554 7 null
554 12 (12-7) 5
554 23 (23-12) 11
554 23 (23-23) 0
590 8 Null
590 9 (9-8) 1
595 13 Null
Obs: para os valores Null poderia repedir os valores da coluna dias
⚠️ Outro detalhe: tentei utilizar a função LAG porem sem sucesso, pois nossa versão do banco é 2005 🫣
SELECT
D.Numero
,D.DtEmissao
,D.CodigoSituacao
,C.Descricao as Cargo
,Data
,INS.Descricao as Situação
,P.NomeUsual as Responsavel
,CASE WHEN ins.Descricao = 'Liberado' THEN
DATEDIFF(DAY,D.DtMovimento, ISL.Data)
WHEN ins.Descricao = 'Liberado' THEN
DATEDIFF(DAY,ISL.Data,ISL.Data)
ELSE DATEDIFF (day,D.DtEmissao,ISL.Data)
END as Dias
,null as Diferenca_Dias
--,LAG(ISL.Data,1) OVER (PARTITION BY D.Numero ORDER BY D.Numero, ISL.Data) as Numero_Dias
FROM
MotivoContratacaoCandidato MCC
LEFT JOIN RequisicaoCandidato RC
ON RC.OIDMotivoContratacaoCandidato = MCC.OIDMotivoContratacaoCandidato
LEFT JOIN RequisicaoCandidatoMov RCM
ON RC.OIDdocumento = RCM.OIDRequisicaoCandidatoMov
LEFT JOIN Documento D
on D.OIDdocumento = RC.OIDdocumento
LEFT JOIN Cargo C
ON C.OIDCargo = Rc.oidcargo
LEFT JOIN IndicativoSituacaoLog ISL
on D.OIDDocumento = ISL.OIDDocumento
LEFT JOIN IndicativoSituacao INS
on ins.OIDIndicativoSituacao = ISL.OIDIndicativoSituacao
LEFT JOIN Pessoa P
ON P.OIDPessoa = ISL.OIDResponsavel
WHERE YEAR(D.DtEmissao) = 2024 AND D.Numero in ('590','595','554','521')
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.