Jump to content
Thiago Btos

Select - maior registro

Recommended Posts

Boa tarde galera.

 

Fiz um select que tras 4 informações do banco (matricula, nome, data e hora)

SELECT 
    QD1_MAT, 
    RA_NOME, 
    QD1_DTBAIX AS DATA,
    QD1_HRBAIX
FROM QD1010 QD1 
INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*'
ORDER BY QD1_DTBAIX, QD1_HRBAIX

Retornando os seguintes registros:

image.png.d89df981a1ec99f8ee0e5f22d8b720fd.png

 

 

 

Preciso retornar somente as linhas em amarelo, que seria a seguinte condição.

Caso tiver alguma matricula igual, trazer somente o registro com a maior data, junto com seu respectivo horário.

 

 

O mais próximo que consegui chegar foi utilizando o MAX para data e hora, e agrupando o restante dos campos.

SELECT QD1_MAT,RA_NOME,MAX(DATA), MAX(QD1_HRBAIX) FROM (
SELECT 
    QD1_MAT, 
    RA_NOME, 
    QD1_DTBAIX AS DATA,
    QD1_HRBAIX
    FROM QD1010 QD1 
    INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*'
    )
    GROUP BY QD1_MAT,RA_NOME

Porém na hora ele não pega o valor correspondente e sim o valor máximo.

image.png.20af610ce4a25198e9fde5d41c3479f6.png

 

 

Ai estou travado nessa parte, como faço para trazer a hora corresponde sem o restante dos registros?

Share this post


Link to post
Share on other sites

ALGO ASSIM

SELECT 
    QD1_MAT, 
    RA_NOME, 
    QD1_DTBAIX AS DATA,
    QD1_HRBAIX
FROM QD1010 QD1 
INNER JOIN SRA010 SRA ON (RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*')
WHERE QD1_DTBAIX = (SELECT MAX()
                     FROM QD1010 QD1B
                     WHERE QD1B.D_E_L_E_T_ <> '*'
                     AND   QD1B.QD1_MAT = QD1.QD1_MAT)
AND QD1.D_E_L_E_T_ <> '*'                     
ORDER BY QD1_DTBAIX, QD1_HRBAIX

 

Share this post


Link to post
Share on other sites

Obrigado Motta pela sugestão, mas acabou retornou um outro resultado.

 

Fiz um ajuste no meu código e ficou assim, onde concatenei data com hora e posteriormente usei o max, trazendo um único registro:

SELECT QD1_MAT,RA_NOME,MAX(DT_BAIXA) AS DT_BAIXA FROM (
        SELECT QD1_MAT, RA_NOME, QD1_DTBAIX||' '||QD1_HRBAIX AS DT_BAIXA
        FROM QD1010 QD1 
        INNER JOIN SRA010 SRA ON RA_MAT = SUBSTR(QD1_MAT, 5) AND SRA.D_E_L_E_T_ <> '*'
        WHERE QD1.D_E_L_E_T_ <> '*'
        ORDER BY QD1_DTBAIX, QD1_HRBAIX)
    GROUP BY QD1_MAT,RA_NOME

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By RX3Info
      Boa Tarde!
      Pessoal,
      Estou precisando realizar um cálculo dentro de uma select, mas não estou conseguindo, segue abaixo a select sem as operações e um exemplo (que não funcionou) logo abaixo:
       
      Este código está funcionando:
      select A.CODPRODUTO, A.LOTE, A.QTD, A.`LOCAL`, A.OT, A.ALTUSU, A.ALTMOM, B.CODPRODUTO, B.DESCRICAO, B.CUSTO, C.ICMS_VALOR, C.IPI_VALOR, C.COFINS_VALOR, C.QTD from proqtd as A inner join produto as B on a.CODPRODUTO = B.CODPRODUTO inner join nfeprodu as C on B.CODPRODUTO = C.PRODUTO  
      Este não funciona e da erro devido ao cálculo.
      select A.CODPRODUTO, A.LOTE, A.QTD, A.`LOCAL`, A.OT, A.ALTUSU, A.ALTMOM, B.CODPRODUTO, B.DESCRICAO, (B.CUSTO, - C.ICMS_VALOR, - C.IPI_VALOR, - C.COFINS_VALOR, / C.QTD) as CustoSemImpostos from proqtd as A inner join produto as B on a.CODPRODUTO = B.CODPRODUTO inner join nfeprodu as C on B.CODPRODUTO = C.PRODUTO  
      O que eu preciso é o seguinte, que me traga os itens com os valores sem os impostos, veja acima que a tentativa está sendo de pegar o valor de custo de um item, subtrair os impostos e dividir pela quantidade em estoque, desta forma, tenho o valor da unidade de cada item sem os impostos, mas não estou conseguindo.
       
      Se alguém puder me ajudar com um exemplo, ficarei muito agradecido.
      Obrigado!
       
    • By iguulima
      É possivel realizar uma consulta SQL em duas colunas da mesma tabela usando outra função que não seja o AND ou OR? Segue o meu Select ate agora:
       
      (SELECT * FROM product WHERE comid = $idcom AND status = 'Ativo' AND categ = $category AND nameprod like'%$search%'  ORDER BY id DESC)  
      Por exemplo se eu colocar um AND após buscar o nameprod, no nome do produto não tiver a palavra chave ele também não irá buscar. Ou se colocar um OR ele anulo as outras condições até onde eu sei.
      Iniciante em programação.
    • By lezão
      Boa noite!
      Td bem com vcs?
      Estou usando esse código mas não retorna nada!
       
      Alguém pode me ajudar ?
       
       
      <?php $sql = mysqli_query($link, "SELECT ver_post, COUNT(ver_post) AS Quantidade FROM tab_comentarios where ver_post = 'red' Group by ver_post"); ?> Variável
      <?php echo $Quantidade; ?>  
    • By MarcosAntonio
      Boa tarde !
      estou carregando um arquivo texto numa variável BLOB e preciso manipular em loop, para ler linha a linha e aplicar os SUBSTRs para inserir no banco, mas não sei como fazer o loop, a interação entre as linhas e quando saber o momento de sair do loop, alguém pode me ajudar?

      ex do conteúdo do BLOB:
       
      2AAA02012021123421
      2AAA02012021213453
      2AAA02012021105413
       
      quero por exemplo retirar a informação da linha 2 a partir do quarto caracter e parando no decimo segundo caracteres
    • By Motta
      Oracle is moving its headquarters from Silicon Valley to Austin, Texas
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.