Olá Boa Tarde a todo o Forum,
Em temos o Amigo Alexandre Neves ajudou neste filtro em que no relatório pegava apenas funcionários que na tabela pontos esteja em Inactividade e DataFim =31-12-9999 e ainda se na tabela Ausências o CodAusencia fosse <>6004
SELECT * FROM (SELECT [Nº ORD], CCusto, [DESIGNAÇAO ENT ANALI], Pontos.DataInicio, Pontos.DataFim, tbAusencias.CodAusencia, DesigAusencia, tbAusencias.DataInicio AS InAusencia, tbAusencias.DataFim AS FimAusencia, NOME, Ficheiro_Mestre.CodEmpresa, tbEmpresas.NomeEmpresa, ZONA, SIT FROM ((((Ficheiro_Mestre INNER JOIN Pontos ON Ficheiro_Mestre.[Nº ORDEM] = Pontos.[Nº ORD]) LEFT JOIN [Entidades Analiticas] ON Pontos.CCusto = [Entidades Analiticas].[E ANAL]) LEFT JOIN tbEmpresas ON Ficheiro_Mestre.CodEmpresa = tbEmpresas.CodEmpresa) LEFT JOIN tbAusencias ON Pontos.[Nº ORD] = tbAusencias.NOrdem) LEFT JOIN tbCodAusencia ON tbAusencias.CodAusencia = tbCodAusencia.CodAusencia GROUP BY [Nº ORD], CCusto, [DESIGNAÇAO ENT ANALI], Pontos.DataInicio, Pontos.DataFim, tbAusencias.CodAusencia, DesigAusencia, tbAusencias.DataInicio, tbAusencias.DataFim, NOME, Ficheiro_Mestre.CodEmpresa, tbEmpresas.NomeEmpresa, ZONA, SIT HAVING [DESIGNAÇAO ENT ANALI] Like "*Inactividade*" AND Pontos.DataFim=#12/31/9999# AND SIT=1
ORDER BY [Nº ORD]) WHERE [Nº ORD] NOT IN (SELECT [Nº ORD] FROM Pontos LEFT JOIN tbAusencias ON Pontos.[Nº ORD] = tbAusencias.NOrdem WHERE CodAusencia=6004)
tudo correto até aqui, mas necessitava agora o seguinte
pegava apenas funcionários que na tabela pontos esteja em Inactividade e DataFim =31-12-9999 e ainda se na tabela Ausências o CodAusencia fosse <>6004 e fosse o último registo com codAusencia <>6004
É que a tabela pode ter CodAusencia <>6004 mas não ser último registo
(como não tenho id, podia ser pela o máxima DataFim)
Agradeço ajuda
José Silva
Em temos o Amigo Alexandre Neves ajudou neste filtro em que no relatório pegava apenas funcionários que na tabela pontos esteja em Inactividade e DataFim =31-12-9999 e ainda se na tabela Ausências o CodAusencia fosse <>6004
SELECT * FROM (SELECT [Nº ORD], CCusto, [DESIGNAÇAO ENT ANALI], Pontos.DataInicio, Pontos.DataFim, tbAusencias.CodAusencia, DesigAusencia, tbAusencias.DataInicio AS InAusencia, tbAusencias.DataFim AS FimAusencia, NOME, Ficheiro_Mestre.CodEmpresa, tbEmpresas.NomeEmpresa, ZONA, SIT FROM ((((Ficheiro_Mestre INNER JOIN Pontos ON Ficheiro_Mestre.[Nº ORDEM] = Pontos.[Nº ORD]) LEFT JOIN [Entidades Analiticas] ON Pontos.CCusto = [Entidades Analiticas].[E ANAL]) LEFT JOIN tbEmpresas ON Ficheiro_Mestre.CodEmpresa = tbEmpresas.CodEmpresa) LEFT JOIN tbAusencias ON Pontos.[Nº ORD] = tbAusencias.NOrdem) LEFT JOIN tbCodAusencia ON tbAusencias.CodAusencia = tbCodAusencia.CodAusencia GROUP BY [Nº ORD], CCusto, [DESIGNAÇAO ENT ANALI], Pontos.DataInicio, Pontos.DataFim, tbAusencias.CodAusencia, DesigAusencia, tbAusencias.DataInicio, tbAusencias.DataFim, NOME, Ficheiro_Mestre.CodEmpresa, tbEmpresas.NomeEmpresa, ZONA, SIT HAVING [DESIGNAÇAO ENT ANALI] Like "*Inactividade*" AND Pontos.DataFim=#12/31/9999# AND SIT=1
ORDER BY [Nº ORD]) WHERE [Nº ORD] NOT IN (SELECT [Nº ORD] FROM Pontos LEFT JOIN tbAusencias ON Pontos.[Nº ORD] = tbAusencias.NOrdem WHERE CodAusencia=6004)
tudo correto até aqui, mas necessitava agora o seguinte
pegava apenas funcionários que na tabela pontos esteja em Inactividade e DataFim =31-12-9999 e ainda se na tabela Ausências o CodAusencia fosse <>6004 e fosse o último registo com codAusencia <>6004
É que a tabela pode ter CodAusencia <>6004 mas não ser último registo
(como não tenho id, podia ser pela o máxima DataFim)
Agradeço ajuda
José Silva
- Anexos
- Inactividade_Rev2.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (193 Kb) Baixado 14 vez(es)
Última edição por Alexandre Neves em 7/2/2019, 16:16, editado 1 vez(es) (Motivo da edição : corrigido título, de 'Filtro na oringem do relatorio' para 'Filtro na origem do relatório')