Gokuro
Veterano
Registrado
704 Mensagens
76 Curtidas
Baseado na tua expressão:
[code=SQL]SELECT
PFUNC.CHAPA 'CHAPAADM', PFUNC.NOME 'NOMEADM', PFUNC.CODTIPO 'TIPOADM',
PFUNC.CODSECAO 'CODSECAOADM', PSECAO.DESCRICAO 'SECAOADM',
PFUNC.DATAADMISSAO 'ADM', PFUNC.DATADEMISSAO 'DEMISSAOADM'
-- , COUNT (*) QUANTIDADEADM
FROM
PFUNC (NOLOCK) LEFT JOIN PSECAO (NOLOCK)
ON PSECAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PSECAO.CODIGO = PFUNC.CODSECAO
WHERE
PFUNC.CODCOLIGADA = 'CODCOLIGADA'
AND PFUNC.CODSECAO LIKE 'CODSECAO'
-- Admitidos no período
AND (PFUNC.DATAADMISSAO BETWEEN 'DATAINICIAL' AND 'DATAFINAL'
-- Demitidos no período
OR PFUNC.DATADEMISSAO BETWEEN 'DATAINICIAL' AND 'DATAFINAL')
--
AND PFUNC.CODTIPO NOT IN ('A', 'D', 'T')
-- GROUP BY
-- PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODTIPO, PFUNC.CODSECAO, PSECAO.DESCRICAO,
-- PFUNC.DATAADMISSAO, PFUNC.DATADEMISSAO
ORDER BY
PFUNC.CODSECAO;[/code]
que listará admitidos e demitidos num período, desabilitando o uso de funções de agregação, ok? Primeiro seleciona, depois agrega.
[]'s
atirm82
Novo Membro
Registrado
16 Mensagens
0 Curtidas
perfeito, parceiro, valeu pela força!
TRONNER
Cyber Highlander
Registrado
32.2K Mensagens
7.3K Curtidas
perfeito, parceiro, valeu pela força!
Parece ser a linha TOTVS/RM referente ao labore, você você incluir esta consulta no gerador de planilhas dele e salvar em .xls caso necessite enviar por email ou para algum relatório gerencial também
atirm82
Novo Membro
Registrado
16 Mensagens
0 Curtidas
É da TOTVS mesmo, a ideia é gerar um relatório, porém, preciso contar o total de admissões e demissões por seção, tentei agregar o count para cada admissao e demissao, conforme abaixo:
Porém ,não funcionou, como faço para contar as linhas de cada campo?
SELECT
PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODTIPO,PFUNC.CODSECAO, PSECAO.DESCRICAO,
PFUNC.DATAADMISSAO, PFUNC.DATADEMISSAO, COUNT (DISTINCT PFUNC.DATADEMISSAO) QUANTDEM
FROM
PFUNC (NOLOCK) LEFT JOIN PSECAO (NOLOCK)
ON PSECAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PSECAO.CODIGO = PFUNC.CODSECAO
WHERE
PFUNC.DATAADMISSAO IN
(SELECT COUNT (DISTINCT PFUNC.DATAADMISSAO) WHERE
PFUNC.DATAADMISSAO BETWEEN '2014-09-01' AND '2014-09-30')
OR (PFUNC.DATADEMISSAO BETWEEN '2014-09-01' AND '2014-09-30')
AND PFUNC.CODCOLIGADA = '1'
AND PFUNC.CODSECAO LIKE '%'
AND PFUNC.CODTIPO NOT IN ('A', 'D', 'T')
GROUP BY PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODTIPO,PFUNC.CODSECAO, PSECAO.DESCRICAO,
PFUNC.DATAADMISSAO, PFUNC.DATADEMISSAO
ORDER BY PFUNC.CODSECAO
Gokuro
Veterano
Registrado
704 Mensagens
76 Curtidas
A consulta de agragação isto é. das contagens, envolve a consulta de seleção dos admitidos/demitidos, agrupando por seção.
Grosseiramente é assim:
select seção, count(admitidos), count(demitidos) from ( select .../* admitidos e demitidos no período */ ) group by seção;
Repetindo: Primeiro seleciona, depois agrega.
[]'s
atirm82
Novo Membro
Registrado
16 Mensagens
0 Curtidas
Descobri a solução que segue abaixo:
SELECT
PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODSECAO, PSECAO.DESCRICAO,
PFUNC.DATAADMISSAO, PFUNC.DATADEMISSAO,
(CASE WHEN PFUNC.DATADEMISSAO BETWEEN '2014-09-01' AND '2014-09-30' THEN COUNT (*) ELSE 0 END) QUANTDEM,
(CASE WHEN PFUNC.DATAADMISSAO BETWEEN '2014-09-01' AND '2014-09-30' THEN COUNT (*)
ELSE 0 END) QUANTADM
FROM
PFUNC (NOLOCK) LEFT JOIN PSECAO (NOLOCK)
ON PSECAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PSECAO.CODIGO = PFUNC.CODSECAO
WHERE
PFUNC.CODCOLIGADA = '1'
AND PFUNC.CODSECAO LIKE '%'
AND (PFUNC.DATAADMISSAO BETWEEN '2014-09-01' AND '2014-09-30'
OR PFUNC.DATADEMISSAO BETWEEN '2014-09-01' AND '2014-09-30')
AND PFUNC.CODTIPO NOT IN ('A', 'D', 'T')
GROUP BY PFUNC.CHAPA, PFUNC.NOME, PFUNC.CODTIPO,PFUNC.CODSECAO, PSECAO.DESCRICAO,
PFUNC.DATAADMISSAO, PFUNC.DATADEMISSAO
ORDER BY PFUNC.CODSECAO
Se souberem uma forma melhor! Me avisem, pois fiz por tentativa e erro.