Sebastião Souza Junior Postado 21 de Outubro de 2008 Tópicos Que Criei: 284 Tópicos/Dia: 0.04 Meu Conteúdo: 2.117 Conteúdo/Dia: 0.32 Reputação: 10 Pontos/Conquistas: 13.363 Conteúdo Resolvido: 0 Dias Ganho: 9 Status: Offline Idade: 45 Denunciar Compartilhar Postado 21 de Outubro de 2008 Pessoal, alguém já tem pronto um sentença ou procedure que retorne as batidas do funcionários no RM Chronus (ABATFUN) por linha/dia em SQL Server? PS: Sei que existe função de fórmula no Chronus mas não atende. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
rbrito Postado 21 de Outubro de 2008 Tópicos Que Criei: 23 Tópicos/Dia: 0.00 Meu Conteúdo: 174 Conteúdo/Dia: 0.03 Reputação: 3 Pontos/Conquistas: 1.109 Conteúdo Resolvido: 0 Dias Ganho: 2 Status: Offline Idade: 42 Dispositivo: Windows Denunciar Compartilhar Postado 21 de Outubro de 2008 Sebastião Segue abaixo mas é para Oracle, talvez ajude na idéia : 1o Retorna Dia da Semana -------------------------------------------------------------------------------- SELECT DISTINCT DATA, DATA DATAINT, CASE WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('DOMINGO','SUNDAY') THEN 'DOM' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEGUNDA-FEIRA','MONDAY') THEN 'SEG' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('TERÇA-FEIRA','TUESDAY') THEN 'TER' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUARTA-FEIRA','WEDNESDAY') THEN 'QUA' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUINTA-FEIRA','THURSDAY') THEN 'QUI' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEXTA-FEIRA','FRIDAY') THEN 'SEX' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SÁBADO','SATURDAY') THEN 'SAB' END AS DIASEMANA FROM AAFHTFUN WHERE DATA BETWEEN '21/05/2008' AND '21/05/2008' UNION SELECT DISTINCT DATA, DATA DATAINT, CASE WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('DOMINGO','SUNDAY') THEN 'DOM' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEGUNDA-FEIRA','MONDAY') THEN 'SEG' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('TERÇA-FEIRA','TUESDAY') THEN 'TER' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUARTA-FEIRA','WEDNESDAY') THEN 'QUA' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('QUINTA-FEIRA','THURSDAY') THEN 'QUI' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SEXTA-FEIRA','FRIDAY') THEN 'SEX' WHEN TRIM(TO_CHAR(DATA, 'DAY')) IN ('SÁBADO','SATURDAY') THEN 'SAB' END AS DIASEMANA FROM AABONFUN WHERE DATA BETWEEN '21/05/2008' AND '21/05/2008' ORDER BY DATA -------------------------------------------------------------------------------- 2o Retorna Espelho do Cartão -------------------------------------------------------------------------------- SELECT (CASE WHEN MINTOTIME(SUM(ENTR1),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(ENTR1),':') END) || ' ' || (CASE WHEN MINTOTIME(SUM(SAID1),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(SAID1),':') END) || ' ' || (CASE WHEN MINTOTIME(SUM(ENTR2),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(ENTR2),':') END) || ' ' || (CASE WHEN MINTOTIME(SUM(SAID2),':') = '00:00' THEN '' ELSE MINTOTIME(SUM(SAID2),':') END) FROM( SELECT MIN(BATIDA) ENTR1, 0 SAID1, 0 ENTR2, 0 SAID2 FROM ABATFUN WHERE CODCOLIGADA = '01' AND CHAPA = '01008724' AND DATA = '21/05/2008' UNION SELECT 0 ENTR1, MIN(BATIDA) SAID1, 0 ENTR2, 0 SAID2 FROM ABATFUN WHERE CODCOLIGADA = '01' AND CHAPA = '01008724' AND DATA = '21/05/2008' AND BATIDA <> (SELECT MIN(BATIDA) FROM ABATFUN WHERE CODCOLIGADA = '01' AND CHAPA = '01008724' AND DATA = '21/05/2008') AND ROWNUM <= 2 UNION SELECT 0 ENTR1, 0 SAID1, ENTR2, 0 SAID2 FROM (SELECT BATIDA ENTR2, ROWNUM ORDEM FROM ABATFUN WHERE CODCOLIGADA = '01' AND CHAPA = '01008724' AND DATA = '21/05/2008' ORDER BY BATIDA) WHERE ORDEM = 3 UNION SELECT 0 ENTR1, 0 ENTR2, 0 SAID1, SAID2 FROM (SELECT BATIDA SAID2, ROWNUM ORDEM FROM ABATFUN WHERE CODCOLIGADA = '01' AND CHAPA = '01008724' AND DATA = '21/05/2008' ORDER BY BATIDA) WHERE ORDEM = 4) -------------------------------------------------------------------------------- Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Sebastião Souza Junior Postado 21 de Outubro de 2008 Tópicos Que Criei: 284 Tópicos/Dia: 0.04 Meu Conteúdo: 2.117 Conteúdo/Dia: 0.32 Reputação: 10 Pontos/Conquistas: 13.363 Conteúdo Resolvido: 0 Dias Ganho: 9 Status: Offline Idade: 45 Autor Denunciar Compartilhar Postado 21 de Outubro de 2008 Oi Rafael essa eu já havia achado aqui no fórum, preciso de uma para SQL mesmo. De qualquer forma obrigado. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jully Postado 22 de Outubro de 2008 Tópicos Que Criei: 21 Tópicos/Dia: 0.00 Meu Conteúdo: 125 Conteúdo/Dia: 0.02 Reputação: 0 Pontos/Conquistas: 835 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 43 Denunciar Compartilhar Postado 22 de Outubro de 2008 Eu também precisava dessa SQL para colocar no recibo de pagamento com as batidas do ponto mas não consegui fazer.. Espero que alguém consiga nos ajudar. []'s Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
sidinei Postado 22 de Outubro de 2008 Tópicos Que Criei: 3 Tópicos/Dia: 0.00 Meu Conteúdo: 5 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 55 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 52 Denunciar Compartilhar Postado 22 de Outubro de 2008 Eu também precisava dessa SQL para colocar no recibo de pagamento com as batidas do ponto mas não consegui fazer.. Espero que alguém consiga nos ajudar. []'s Esse tipo de tratamento é muito interessante..espero também por esse help....estou trabalhando com a mesma lógica para criar em SQL...se alguem conseguir antes, agradeço Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 22 de Outubro de 2008 Tópicos Que Criei: 902 Tópicos/Dia: 0.14 Meu Conteúdo: 8.855 Conteúdo/Dia: 1.34 Reputação: 311 Pontos/Conquistas: 106.691 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 22 de Outubro de 2008 Desculpa ai, mas poderia exemplificar como que está na tabela ABATFUN e como deseja que seja o resultado ? Se for o que estou pensando, montei uma formula com sentença esses dias que poderá atender. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Sebastião Souza Junior Postado 22 de Outubro de 2008 Tópicos Que Criei: 284 Tópicos/Dia: 0.04 Meu Conteúdo: 2.117 Conteúdo/Dia: 0.32 Reputação: 10 Pontos/Conquistas: 13.363 Conteúdo Resolvido: 0 Dias Ganho: 9 Status: Offline Idade: 45 Autor Denunciar Compartilhar Postado 22 de Outubro de 2008 Jair, a tabela guarda as batidas do funcionário em cada dia porém é um registro para cada batida, se o funcionário efetuou quatro batidas no dia são quatro registros. Preciso do retorno assim: batidas do dia 25/10/2008 =08:01 12:02 14:03 18:05 Existe um função de fórmula que traz esse resultado, ela até me atenderia, porém ela não funciona com o parametro novo que implementaram que é visualizar dados de todas as coligadas permitidas. Se o funcionário é da coligada 1 e você está emitindo o relatório da coligada 2 a fórmula retorna batidas de um funcionário da coligada dois (meio sem sentido). Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jamensson Postado 23 de Outubro de 2008 Tópicos Que Criei: 23 Tópicos/Dia: 0.00 Meu Conteúdo: 140 Conteúdo/Dia: 0.02 Reputação: 3 Pontos/Conquistas: 983 Conteúdo Resolvido: 0 Dias Ganho: 3 Status: Offline Idade: 41 Denunciar Compartilhar Postado 23 de Outubro de 2008 Qual o seu banco de dados? Sql Server 2000 Sql Server 2005 Oracle Abraço. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Sebastião Souza Junior Postado 23 de Outubro de 2008 Tópicos Que Criei: 284 Tópicos/Dia: 0.04 Meu Conteúdo: 2.117 Conteúdo/Dia: 0.32 Reputação: 10 Pontos/Conquistas: 13.363 Conteúdo Resolvido: 0 Dias Ganho: 9 Status: Offline Idade: 45 Autor Denunciar Compartilhar Postado 23 de Outubro de 2008 O Banco é SQL 2000, sentença para Oracle nossa amigo Rbrito já postou logo acima. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jully Postado 23 de Outubro de 2008 Tópicos Que Criei: 21 Tópicos/Dia: 0.00 Meu Conteúdo: 125 Conteúdo/Dia: 0.02 Reputação: 0 Pontos/Conquistas: 835 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 43 Denunciar Compartilhar Postado 23 de Outubro de 2008 Existe um função de fórmula que traz esse resultado, ela até me atenderia, porém ela não funciona com o parametro novo que implementaram que é visualizar dados de todas as coligadas permitidas. Se o funcionário é da coligada 1 e você está emitindo o relatório da coligada 2 a fórmula retorna batidas de um funcionário da coligada dois (meio sem sentido). Oi Sebastião, não entendi muito bem essa questão: Nesse seu exemplo ele trabalha apenas na coligada 1 e no relatório emitido da coligada 2 esse funcionário está saindo mesmo não sendo funcionário? Isso não seria bug na versão? ou ele é funcionário das 2 coligadas e está saindo as batidas de todas as coligadas no mesmo relatório? Jair, No Chronus tem uma função (fórmula) que retorna as batidas exatamente como precisamos, mas como o relatório será emitido no Labore, essa função não está disponível, por issa a SQL. O problema é que não sabemos quantas batidas o funcionário tem naquele dia.. pensei em criar essa estrutura, mas realmente não consegui evoluir LD01 SQL (SELECT BATIDA$ FROM ABATFUN WHERE DATA >=:DATA_INICIAL_ESPELHO AND DATA <=:DATA_FINAL_ESPELHO) (espelhar campo na Ld01.01) LD01.01 espelho#1 fórmula (Decl batida, aux; ExecSQL '01' e '02' repita setvar (aux, resultsql('01','batida') ate count = resultsql ('02','qtde'); aux) Sql01 Select a.batida from abatfun a where a.data =:espelho#1 Sql02 Select count(a.batida) from abatfun a where a.data =:espelho#1 mas como eu tenho uma fórmula que executa sql que precisa de um parâmetro dentro da LD, não sei se funcionaria... Infelizmente não consegui testar, mas fica a dica se alguém tiver tempo para fazê-lo. Abraços. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Sebastião Souza Junior Postado 23 de Outubro de 2008 Tópicos Que Criei: 284 Tópicos/Dia: 0.04 Meu Conteúdo: 2.117 Conteúdo/Dia: 0.32 Reputação: 10 Pontos/Conquistas: 13.363 Conteúdo Resolvido: 0 Dias Ganho: 9 Status: Offline Idade: 45 Autor Denunciar Compartilhar Postado 23 de Outubro de 2008 Juliana, a pouco tempo foi implementado o seguinte recurso no gerador Visualizar dados de todas coligadas, porém a fórmula está com problema ao usar esse recurso. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Ivan Martinez Postado 23 de Outubro de 2008 Tópicos Que Criei: 49 Tópicos/Dia: 0.01 Meu Conteúdo: 219 Conteúdo/Dia: 0.03 Reputação: 2 Pontos/Conquistas: 1.587 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 52 Denunciar Compartilhar Postado 23 de Outubro de 2008 Jully, Não sei se adiantaria pra vc, mas vc já cogitou a possibilidade de gerar este recibo de pagamento no Chronus ? Se isso não for um problema para o cliente (ter que entrar no Chronus para emitir) , acho que seria uma solução viável para você. Abraço Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jully Postado 24 de Outubro de 2008 Tópicos Que Criei: 21 Tópicos/Dia: 0.00 Meu Conteúdo: 125 Conteúdo/Dia: 0.02 Reputação: 0 Pontos/Conquistas: 835 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 43 Denunciar Compartilhar Postado 24 de Outubro de 2008 gerar este recibo de pagamento no Chronus ? Ivan, O problema é que no Chronus também não terei a possibilidade de colocar LD's com as tabelas do Labore (ex. PFFINANC, ETC...) aí tratar todo o resto por SQL no Chronus é muito mais trabalhoso do que trazer as batidas pro Labore. E os demais? o que acham? Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 24 de Outubro de 2008 Tópicos Que Criei: 902 Tópicos/Dia: 0.14 Meu Conteúdo: 8.855 Conteúdo/Dia: 1.34 Reputação: 311 Pontos/Conquistas: 106.691 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 24 de Outubro de 2008 Vamos lá... eu precisei fazer uma coisa semelhante a isso no RM Nucleus, que era pegar os registros de várias linhas e colocar tudo num campo único de retorno, mas vamos lá, adaptando: Sentença SQL: 0003 - Busca Cidades nos Itens Select isnull(i.Campolivre, ' ') CampoLivre, Valor From Titmmov i (nolock) left join ttrbmov t (nolock) on (t.idmov= i.idmov and t.codcoligada= i.codcoligada and t.nseqitmmov= i.nseqitmmov) left join tprd p (nolock) on (i.idprd = p.idprd and i.codcoligada = p.codcoligada) Where i.campolivre is not null and codtrb = 'ISS' and codigoprd = '80.000.00.99.99' and i.idmov = :FRM_IDMOV and i.codcoligada = :FRM_Coligada Formula 1: Coligada - CodColigada COLIGADACORRENTE Formula 2: IDMOV - IdMov Corrente TabMov('IDMOV', 'I') Formula 3: 00005 - Monta ISS's detalhados no Corpo da NF Decl( Retorno, ValorISS, Finaliza ); Execsql('0003'); Setvar(Retorno, ' '); Repita Setvar( ValorISS, ResultSQL('0003', 'Valor')); Se ValorISS >0 Entao SetVar( Retorno, CONCAT ( Retorno, Substr (CONCAT2 ( ResultSql('0003', 'CampoLivre'), '......................... '),1,20))); Setvar( Retorno, CONCAT2 ( Retorno, STR ( ResultSql('0003', 'Valor') , '######.##'))) Senao 0 Fimse; Se PROXREGSQL ('0003') = 1 Entao Setvar( Finaliza, 'Não' ); Se ValorISS >0 Entao Setvar( Retorno, CONCAT ( Retorno, CHR(10) ) ) Senao 0 Fimse Senao Setvar( Finaliza, 'Sim' ) FimSe Ate Finaliza = 'Sim'; Retorno --------------------------------------------- Bom, o que isso faz, no meu caso ? Como tenho que imprimir os valores e descrição de todas Cidades ( Campolivre na Titmmov ), e imprimo isso na linha do Rodapé, o sistema não tem como imprimir várias linhas... se fosse numa LD, tudo bem, seriam impressos, de acordo com os ítens. Mas preciso de um "resumo" das linhas e os valores que busco da ttrbmov para o tributo ISS. Então, com a sentença, varremos todos os registros que existem para o movimento corrente. Carrego a mesma pela Fórmula e conforme o primeiro retorno, guardo numa variável, CampoLivre e Valor, se tiver mais linhas, coloco o CHR(10) que é um salto de linha, passo para próximo registro e repito o processo. Ao final, tenho na minha variável "Retorno" todos os dados que precisarei imprimir, então, finaliza a fórmula e retorna o conteúdo total de uma só vez, me permitindo imprimir. -------------------------------------------- Para o que o Junior quer, podemos fazer mais ou menos o mesmo, vou tentar montar algo aqui, vamos ver: ... já já completo aqui. Qualquer coisa, vai tentando montar por ai. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 24 de Outubro de 2008 Tópicos Que Criei: 902 Tópicos/Dia: 0.14 Meu Conteúdo: 8.855 Conteúdo/Dia: 1.34 Reputação: 311 Pontos/Conquistas: 106.691 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Windows Denunciar Compartilhar Postado 24 de Outubro de 2008 Pra ajudar ae... segue a forma que vc tem que fazer para "converter" as batidas que o sistema grava em minutos, pra o formato de horas: Select top 100 CodColigada, Chapa, Data, Batida, case when (Batida/60) > 9 then cast((Batida/60) as varchar) else '0'+cast((Batida/60) as varchar) end + ':' + case when Batida-((Batida/60)*60) > 9 then cast(Batida-((Batida/60)*60) as varchar) else '0'+cast(Batida-((Batida/60)*60) as varchar) end BatidaemHora from abatfun where year(data) = 2008 and month(data) = 10 and day(data) = 20 order by codcoligada, Chapa, data, batida Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Fabio Jr. Postado 14 de Janeiro de 2011 Tópicos Que Criei: 7 Tópicos/Dia: 0.00 Meu Conteúdo: 27 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 205 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 14 de Janeiro de 2011 Pra ajudar ae... segue a forma que vc tem que fazer para "converter" as batidas que o sistema grava em minutos, pra o formato de horas: Select top 100 CodColigada, Chapa, Data, Batida, case when (Batida/60) > 9 then cast((Batida/60) as varchar) else '0'+cast((Batida/60) as varchar) end + ':' + case when Batida-((Batida/60)*60) > 9 then cast(Batida-((Batida/60)*60) as varchar) else '0'+cast(Batida-((Batida/60)*60) as varchar) end BatidaemHora from abatfun where year(data) = 2008 and month(data) = 10 and day(data) = 20 order by codcoligada, Chapa, data, batida Ótimo a Jair, estava precisando exatamente disso. Obrigado! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
fabio zettermann Postado 14 de Janeiro de 2011 Tópicos Que Criei: 13 Tópicos/Dia: 0.00 Meu Conteúdo: 64 Conteúdo/Dia: 0.01 Reputação: 1 Pontos/Conquistas: 451 Conteúdo Resolvido: 0 Dias Ganho: 1 Status: Offline Idade: 46 Denunciar Compartilhar Postado 14 de Janeiro de 2011 (editado) Bom dia! Pessoal vejam a consulta abaixo se puder ajudar. chapa, nome,cod.seção,par.coletivo,função,data,batidas do dia em linha(quantos registros forem feitos) SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) /60) as varchar))) + cast((SUM(BATIDA1) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) %60) as varchar))) + cast((SUM(BATIDA1) %60) as varchar) as BATIDA1, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) /60) as varchar))) + cast((SUM(BATIDA2) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) %60) as varchar))) + cast((SUM(BATIDA2) %60) as varchar) as BATIDA2, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) /60) as varchar))) + cast((SUM(BATIDA3) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) %60) as varchar))) + cast((SUM(BATIDA3) %60) as varchar) as BATIDA3, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) /60) as varchar))) + cast((SUM(BATIDA4) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) %60) as varchar))) + cast((SUM(BATIDA4) %60) as varchar) as BATIDA4, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) /60) as varchar))) + cast((SUM(BATIDA5) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) %60) as varchar))) + cast((SUM(BATIDA5) %60) as varchar) as BATIDA5, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) /60) as varchar))) + cast((SUM(BATIDA6) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) %60) as varchar))) + cast((SUM(BATIDA6) %60) as varchar) as BATIDA6, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) /60) as varchar))) + cast((SUM(BATIDA7) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) %60) as varchar))) + cast((SUM(BATIDA7) %60) as varchar) as BATIDA7, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) /60) as varchar))) + cast((SUM(BATIDA8) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) %60) as varchar))) + cast((SUM(BATIDA8) %60) as varchar) as BATIDA8, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) /60) as varchar))) + cast((SUM(BATIDA9) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) %60) as varchar))) + cast((SUM(BATIDA9) %60) as varchar) as BATIDA9, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) /60) as varchar))) + cast((SUM(BATIDA10) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) %60) as varchar))) + cast((SUM(BATIDA10) %60) as varchar) as BATIDA10 FROM (SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA, CASE WHEN NRO=1 THEN BATIDA ELSE 0 END BATIDA1, CASE WHEN NRO=2 THEN BATIDA ELSE 0 END BATIDA2, CASE WHEN NRO=3 THEN BATIDA ELSE 0 END BATIDA3, CASE WHEN NRO=4 THEN BATIDA ELSE 0 END BATIDA4, CASE WHEN NRO=5 THEN BATIDA ELSE 0 END BATIDA5, CASE WHEN NRO=6 THEN BATIDA ELSE 0 END BATIDA6, CASE WHEN NRO=7 THEN BATIDA ELSE 0 END BATIDA7, CASE WHEN NRO=8 THEN BATIDA ELSE 0 END BATIDA8, CASE WHEN NRO=9 THEN BATIDA ELSE 0 END BATIDA9, CASE WHEN NRO=10 THEN BATIDA ELSE 0 END BATIDA10 FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A.CHAPA, B.DATA ORDER BY A.CHAPA, B.DATA, B.BATIDA) NRO, A.CHAPA, P.NOME, P.CODSECAO, A.CODPARCOL, F.NOME FUNCAO, B.DATA, B.BATIDA FROM ABATFUN B, PFUNC P, APARFUN A, PFUNCAO F WHERE P.CODCOLIGADA=B.CODCOLIGADA AND P.CHAPA=B.CHAPA AND P.CODFUNCAO=F.CODIGO AND P.CODCOLIGADA=F.CODCOLIGADA AND A.CHAPA=P.CHAPA AND A.CODCOLIGADA=P.CODCOLIGADA AND B.DATA between :PLN_B4_D and :PLN_B5_D AND B.BATIDA IS NOT NULL AND P.CODSITUACAO<>'D' AND A.CODPARCOL IN ('0004','0005') ) TABELA ) TABELAO GROUP BY CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA ORDER BY CHAPA Editado 14 de Janeiro de 2011 por fabio zettermann Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Fabio Jr. Postado 14 de Janeiro de 2011 Tópicos Que Criei: 7 Tópicos/Dia: 0.00 Meu Conteúdo: 27 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 205 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 14 de Janeiro de 2011 Bom dia!Pessoal vejam a consulta abaixo se puder ajudar. chapa, nome,cod.seção,par.coletivo,função,data,batidas do dia em linha(quantos registros forem feitos) SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) /60) as varchar))) + cast((SUM(BATIDA1) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA1) %60) as varchar))) + cast((SUM(BATIDA1) %60) as varchar) as BATIDA1, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) /60) as varchar))) + cast((SUM(BATIDA2) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA2) %60) as varchar))) + cast((SUM(BATIDA2) %60) as varchar) as BATIDA2, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) /60) as varchar))) + cast((SUM(BATIDA3) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA3) %60) as varchar))) + cast((SUM(BATIDA3) %60) as varchar) as BATIDA3, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) /60) as varchar))) + cast((SUM(BATIDA4) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA4) %60) as varchar))) + cast((SUM(BATIDA4) %60) as varchar) as BATIDA4, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) /60) as varchar))) + cast((SUM(BATIDA5) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA5) %60) as varchar))) + cast((SUM(BATIDA5) %60) as varchar) as BATIDA5, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) /60) as varchar))) + cast((SUM(BATIDA6) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA6) %60) as varchar))) + cast((SUM(BATIDA6) %60) as varchar) as BATIDA6, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) /60) as varchar))) + cast((SUM(BATIDA7) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA7) %60) as varchar))) + cast((SUM(BATIDA7) %60) as varchar) as BATIDA7, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) /60) as varchar))) + cast((SUM(BATIDA8) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA8) %60) as varchar))) + cast((SUM(BATIDA8) %60) as varchar) as BATIDA8, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) /60) as varchar))) + cast((SUM(BATIDA9) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA9) %60) as varchar))) + cast((SUM(BATIDA9) %60) as varchar) as BATIDA9, REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) /60) as varchar))) + cast((SUM(BATIDA10) /60) as varchar)+ ':' + REPLICATE('0', 2 - LEN(cast((SUM(BATIDA10) %60) as varchar))) + cast((SUM(BATIDA10) %60) as varchar) as BATIDA10 FROM (SELECT CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA, CASE WHEN NRO=1 THEN BATIDA ELSE 0 END BATIDA1, CASE WHEN NRO=2 THEN BATIDA ELSE 0 END BATIDA2, CASE WHEN NRO=3 THEN BATIDA ELSE 0 END BATIDA3, CASE WHEN NRO=4 THEN BATIDA ELSE 0 END BATIDA4, CASE WHEN NRO=5 THEN BATIDA ELSE 0 END BATIDA5, CASE WHEN NRO=6 THEN BATIDA ELSE 0 END BATIDA6, CASE WHEN NRO=7 THEN BATIDA ELSE 0 END BATIDA7, CASE WHEN NRO=8 THEN BATIDA ELSE 0 END BATIDA8, CASE WHEN NRO=9 THEN BATIDA ELSE 0 END BATIDA9, CASE WHEN NRO=10 THEN BATIDA ELSE 0 END BATIDA10 FROM (SELECT ROW_NUMBER() OVER(PARTITION BY A.CHAPA, B.DATA ORDER BY A.CHAPA, B.DATA, B.BATIDA) NRO, A.CHAPA, P.NOME, P.CODSECAO, A.CODPARCOL, F.NOME FUNCAO, B.DATA, B.BATIDA FROM ABATFUN B, PFUNC P, APARFUN A, PFUNCAO F WHERE P.CODCOLIGADA=B.CODCOLIGADA AND P.CHAPA=B.CHAPA AND P.CODFUNCAO=F.CODIGO AND P.CODCOLIGADA=F.CODCOLIGADA AND A.CHAPA=P.CHAPA AND A.CODCOLIGADA=P.CODCOLIGADA AND B.DATA between :PLN_B4_D and :PLN_B5_D AND B.BATIDA IS NOT NULL AND P.CODSITUACAO<>'D' AND A.CODPARCOL IN ('0004','0005') ) TABELA ) TABELAO GROUP BY CHAPA, NOME, CODSECAO, CODPARCOL, FUNCAO, DATA ORDER BY CHAPA Nossa, que ótimo, era isso mesmo Fabio, ajudou muito, não conhecia ROW_NUMBER(), muito util mesmo, só adaptei alguma coisinha por aqui, mas deu tudo certo, DECLARE @CHAPA INT = 00136, @DATAINICIAL_D DATETIME = '20101210', @DATAFINAL_D DATETIME = '20101210' SELECT CHAPA, NOME, CODSECAO, FUNCAO, DATA, REPLICATE('0', 2 - LEN(CAST((SUM(ENT1) /60) AS VARCHAR))) + CAST((SUM(ENT1) /60) AS VARCHAR)+ ':' + REPLICATE('0', 2 - LEN(CAST((SUM(ENT1) %60) AS VARCHAR))) + CAST((SUM(ENT1) %60) AS VARCHAR) AS ENT1, REPLICATE('0', 2 - LEN(CAST((SUM(SAI1) /60) AS VARCHAR))) + CAST((SUM(SAI1) /60) AS VARCHAR)+ ':' + REPLICATE('0', 2 - LEN(CAST((SUM(SAI1) %60) AS VARCHAR))) + CAST((SUM(SAI1) %60) AS VARCHAR) AS SAI1, REPLICATE('0', 2 - LEN(CAST((SUM(ENT2) /60) AS VARCHAR))) + CAST((SUM(ENT2) /60) AS VARCHAR)+ ':' + REPLICATE('0', 2 - LEN(CAST((SUM(ENT2) %60) AS VARCHAR))) + CAST((SUM(ENT2) %60) AS VARCHAR) AS ENT2, REPLICATE('0', 2 - LEN(CAST((SUM(SAI2) /60) AS VARCHAR))) + CAST((SUM(SAI2) /60) AS VARCHAR)+ ':' + REPLICATE('0', 2 - LEN(CAST((SUM(SAI2) %60) AS VARCHAR))) + CAST((SUM(SAI2) %60) AS VARCHAR) AS SAI2, REPLICATE('0', 2 - LEN(CAST((SUM(ENT3) /60) AS VARCHAR))) + CAST((SUM(ENT3) /60) AS VARCHAR)+ ':' + REPLICATE('0', 2 - LEN(CAST((SUM(ENT3) %60) AS VARCHAR))) + CAST((SUM(ENT3) %60) AS VARCHAR) AS ENT3, REPLICATE('0', 2 - LEN(CAST((SUM(SAI3) /60) AS VARCHAR))) + CAST((SUM(SAI3) /60) AS VARCHAR)+ ':' + REPLICATE('0', 2 - LEN(CAST((SUM(SAI3) %60) AS VARCHAR))) + CAST((SUM(SAI3) %60) AS VARCHAR) AS SAI3 FROM (SELECT CHAPA, NOME, CODSECAO, FUNCAO, DATA, CASE WHEN SEQUENCIA = 1 THEN BATIDA ELSE 0 END ENT1, CASE WHEN SEQUENCIA = 2 THEN BATIDA ELSE 0 END SAI1, CASE WHEN SEQUENCIA = 3 THEN BATIDA ELSE 0 END ENT2, CASE WHEN SEQUENCIA = 4 THEN BATIDA ELSE 0 END SAI2, CASE WHEN SEQUENCIA = 5 THEN BATIDA ELSE 0 END ENT3, CASE WHEN SEQUENCIA = 6 THEN BATIDA ELSE 0 END SAI3 FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ABATFUN.CHAPA, ABATFUN.DATA ORDER BY ABATFUN.CHAPA, ABATFUN.DATA, ABATFUN.BATIDA) SEQUENCIA, ABATFUN.CHAPA, PFUNC.NOME, PFUNC.CODSECAO, PFUNCAO.NOME FUNCAO, ABATFUN.DATA, ABATFUN.BATIDA FROM ABATFUN INNER JOIN PFUNC ON ABATFUN.CHAPA = PFUNC.CHAPA INNER JOIN PFUNCAO ON PFUNC.CODFUNCAO = PFUNCAO.CODIGO WHERE ABATFUN.DATA BETWEEN @DATAINICIAL_D AND @DATAFINAL_D AND PFUNC.CODSITUACAO <> 'D') TBPONTOLINHA ) TBPONTOCOLUNA WHERE CHAPA = @CHAPA AND DATA >= @DATAINICIAL_D AND DATA <= @DATAFINAL_D GROUP BY CHAPA, NOME, CODSECAO, FUNCAO, DATA brigadão mesmo. Abraços. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Fabio Jr. Postado 14 de Janeiro de 2011 Tópicos Que Criei: 7 Tópicos/Dia: 0.00 Meu Conteúdo: 27 Conteúdo/Dia: 0.01 Reputação: 0 Pontos/Conquistas: 205 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 14 de Janeiro de 2011 Pra ajudar ae... segue a forma que vc tem que fazer para "converter" as batidas que o sistema grava em minutos, pra o formato de horas: Select top 100 CodColigada, Chapa, Data, Batida, case when (Batida/60) > 9 then cast((Batida/60) as varchar) else '0'+cast((Batida/60) as varchar) end + ':' + case when Batida-((Batida/60)*60) > 9 then cast(Batida-((Batida/60)*60) as varchar) else '0'+cast(Batida-((Batida/60)*60) as varchar) end BatidaemHora from abatfun where year(data) = 2008 and month(data) = 10 and day(data) = 20 order by codcoligada, Chapa, data, batida Agora a questão é a seguinte, preciso converter em horas o atraso do funcionario (AAFHTFUN.ATRASO (me corrijam se nao for esta)). Tentei aplicar a mesma fórmula mas o valor não bate. Alguém tem uma sugestão? Obrigado! Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
RioKi Postado 18 de Fevereiro de 2011 Tópicos Que Criei: 1 Tópicos/Dia: 0.00 Meu Conteúdo: 11 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 65 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 41 Denunciar Compartilhar Postado 18 de Fevereiro de 2011 Pessoal, alguém já tem pronto um sentença ou procedure que retorne as batidas do funcionários no RM Chronus (ABATFUN) por linha/dia em SQL Server? PS: Sei que existe função de fórmula no Chronus mas não atende. Precisei fazer isto outro dia, montei o script abaixo e atendeu meu caso. SELECT A.CODCOLIGADA, A.CHAPA, A.DATA, MIN(B.BATIDA) 'ENT1', MIN(C.BATIDA) 'SAI1', MIN(D.BATIDA) 'ENT2', MIN(E.BATIDA) 'SAI2' FROM AAFHTFUN A LEFT JOIN ABATFUN B ON A.CODCOLIGADA=B.CODCOLIGADA AND A.CHAPA=B.CHAPA AND A.DATA=B.DATA AND B.NATUREZA%2=0 LEFT JOIN ABATFUN C ON A.CODCOLIGADA=C.CODCOLIGADA AND A.CHAPA=C.CHAPA AND A.DATA=C.DATA AND C.NATUREZA%2=1 AND C.BATIDA>B.BATIDA LEFT JOIN ABATFUN D ON A.CODCOLIGADA=D.CODCOLIGADA AND A.CHAPA=D.CHAPA AND A.DATA=D.DATA AND D.NATUREZA%2=0 AND D.BATIDA>C.BATIDA LEFT JOIN ABATFUN E ON A.CODCOLIGADA=E.CODCOLIGADA AND A.CHAPA=E.CHAPA AND A.DATA=E.DATA AND E.NATUREZA%2=1 AND E.BATIDA>D.BATIDA WHERE A.CODCOLIGADA='1' AND A.CHAPA='01713' AND A.DATA BETWEEN '2011-01-16' AND '2011-02-15' GROUP BY A.CODCOLIGADA, A.CHAPA, A.DATA ORDER BY A.CODCOLIGADA, A.CHAPA, A.DATA Nota : Normalmente o Chronus armazena as entradas com natureza par e as saídas com natureza ímpar na ABATFUN. Nota2: Utilizei isto em relatório e formatei os campos com batidas para exibir o formato hora. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.