Logo Hardware.com.br
atirm82
atirm82 Novo Membro Registrado
16 Mensagens 0 Curtidas

SQL dicas

#1 Por atirm82 27/10/2014 - 10:48
Bom dia!
alguém pode me ajudar com o seguinte problema; quero buscar no Banco de dados a seção imediatamente anterior a última seção que o funcionário está atualmente, qual seria o script?
Os dados estão arquivados por data de mudança de seção e codigo da seção
TRONNER
TRONNER Cyber Highlander Registrado
32.2K Mensagens 7.3K Curtidas
#2 Por TRONNER
27/10/2014 - 11:07
Tenta esse:

SELECT nomecampo FROM(SELECT TOP 2 camponome FROM tabelanome ORDER BY nomecampo DESC) WHERE rownum = 2;
cool.png**Quando pensar ser um Golias, cuidado para não encontrar algum Davi**
veja.png Conheça os Poderosos e Gratuitos [ Iperius Backup ] e [ Iperius Remote ]
veja.png Todo dia um software novo e grátis [ clicando aqui ]
boa.gif Faça valer a sua voz com o Mudamos+ { https://www.mudamos.org }
atirm82
atirm82 Novo Membro Registrado
16 Mensagens 0 Curtidas
#3 Por atirm82
27/10/2014 - 11:17
Ficou desta forma, mas não retornou nada

SELECT PFUNC.CHAPA, PFUNC.NOME, PFHSTSEC.CODSECAO,
PFUNC.DATAADMISSAO,PFHSTSEC.DTMUDANCA,
(SELECT TOP 2 PFHSTSEC.DTMUDANCA
FROM PFHSTSEC ORDER BY PFHSTSEC.DTMUDANCA DESC),
PFHSTSEC.MOTIVO

FROM
PFUNC
LEFT JOIN PFHSTSEC ON PFHSTSEC.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFHSTSEC.CHAPA = PFUNC.CHAPA
WHERE
PFUNC.CODCOLIGADA = '1'
AND PFUNC.CHAPA = '33311'
AND PFHSTSEC.DTMUDANCA = 2

ORDER BY DTMUDANCA
TRONNER
TRONNER Cyber Highlander Registrado
32.2K Mensagens 7.3K Curtidas
#4 Por TRONNER
27/10/2014 - 11:28
TOTVS/RM né rolleyes.png?!
Até aqui faltou o [ WHERE rownum = 2; ] mas faça sem o left join pegano uma tabela simples e daí tenta adaptar para a sua necessidade big_green.png, senão tenta procurar no google preferencialmente em inglês para mais resultados algo do tipo sql howto select penultimate field table que deve retornar uma boa gama de resultados.
cool.png**Quando pensar ser um Golias, cuidado para não encontrar algum Davi**
veja.png Conheça os Poderosos e Gratuitos [ Iperius Backup ] e [ Iperius Remote ]
veja.png Todo dia um software novo e grátis [ clicando aqui ]
boa.gif Faça valer a sua voz com o Mudamos+ { https://www.mudamos.org }
atirm82
atirm82 Novo Membro Registrado
16 Mensagens 0 Curtidas
#5 Por atirm82
27/10/2014 - 11:37
Fiz a alteração abaixo e ele retornou que não pode incluir subquery com mais de um registro:

Mensagem 512, Nível 16, Estado 1, Linha 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.


SELECT PFHSTAFT.OBSERVACAO 'NUM BENEFICIO',PFUNC.CHAPA, PFUNC.NOME, PFUNCAO.NOME ' FUNÇÃO',
PFUNC.CODSECAO, PSECAO.DESCRICAO 'SEÇÃO',PFUNC.DATAADMISSAO,PFHSTAFT.DTINICIO, PFHSTAFT.TIPO,PCODSITUACAO.DESCRICAO 'TIPO BENEFICIO',
PFHSTAFT.MOTIVO, PMUDSITUACAO.DESCRICAO 'MOTIVO AFASTAMENTO', PFHSTAFT.CODCID,

(SELECT TOP 2 PFHSTSEC.DTMUDANCA FROM PFHSTSEC ORDER BY PFHSTSEC.DTMUDANCA DESC)


FROM
PFUNC
LEFT JOIN PFHSTSEC ON PFUNC.CODCOLIGADA = PFHSTSEC.CODCOLIGADA AND PFUNC.CHAPA = PFHSTSEC.CHAPA
LEFT JOIN PSECAO ON PSECAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PSECAO.CODIGO = PFUNC.CODSECAO
LEFT JOIN PFUNCAO ON PFUNCAO.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFUNCAO.CODIGO = PFUNC.CODFUNCAO
LEFT JOIN PFHSTAFT ON PFHSTAFT.CODCOLIGADA = PFUNC.CODCOLIGADA AND PFHSTAFT.CHAPA = PFUNC.CHAPA
LEFT JOIN PCODSITUACAO ON PCODSITUACAO.CODCLIENTE = PFHSTAFT.TIPO
LEFT JOIN PMUDSITUACAO ON PMUDSITUACAO.CODCOLIGADA = PFHSTAFT.CODCOLIGADA
AND PMUDSITUACAO.CODCLIENTE = PFHSTAFT.MOTIVO
WHERE
PFUNC.CODCOLIGADA = '1'
AND PFUNC.CODSITUACAO <> 'D'
AND PFHSTAFT.DTINICIO IS NOT NULL
AND PFHSTAFT.DTFINAL IS NULL
ORDER BY PFUNC.NOME

ok, valeu pela ajuda
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal