Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    ORACLE: ultimo valore di dati ragruppati

    Ho la tabella coi campi
    nome; numero; data
    pietro; 10; 21/2/2013
    pietro; 20; 22/2/2013
    nicola; 30; 2/2/2013
    nicola; 40; 1/2/2013

    debbo ottenere il valore del campo numero per la data più recente per ogni nome, ossia:

    nicola; 30; 2/2/2013 -> valore più recente di numero per nicola
    pietro; 20; 22/2/2013 -> valore più recente di numero per pietro

    mi aiutereste a costruire l'sql?

    Pietro

  2. #2
    max(numero) e max(data), group by nome


  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da optime
    max(numero) e max(data), group by nome

    Purtroppo non ho capito e le prove fatte non mi tornano. Riepilogo quello che voglio:
    Ho questa tabella (oracle)

    nome; numero; data
    pietro; 10; 21/2/2013
    nicola; 30; 2/2/2013
    pietro; 20; 22/2/2013
    nicola; 40; 1/2/2013

    ordino la tabella per nome e per data desc e, per ogni nome univoco prendo il primo record (facendo la scansione della tabella ordinata in un ciclo), e ottengo

    nicola; 30; 2/2/2013
    pietro; 20; 22/2/2013

    Il problema è che questo lo faccio da codice e mi chiedevo se fosse possibile farlo con sql puro

    Pietro

  4. #4
    ah, ma bisogna proprio dirti tutto

    select nome, max(numero), max(data) from tabella group by nome

    è così diverso da quanto ti avevo scritto prima?

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da optime
    ah, ma bisogna proprio dirti tutto

    select nome, max(numero), max(data) from tabella group by nome

    è così diverso da quanto ti avevo scritto prima?
    Si, è hai ragione , ma ti spiego

    coi dati forniti ottengo:
    nicola; 40; 2/2/2013

    ma dovrei ottenere
    nicola; 30; 2/2/2013 perchè è 30 il valore della data più recente.

    ciao
    Pietro

  6. #6
    quella tabella ha un id univoco? eventualmente posta la struttura

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da optime
    quella tabella ha un id univoco? eventualmente posta la struttura
    molto semplice:

    codice:
    ID		NUMBER
    NOME	VARCHAR2(50 BYTE)
    NUMERO	NUMBER
    DATA	DATE
    Pietro

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ho provato a fare questo ma chiaramente creo la query da codice

    SELECT * FROM (
    SELECT * FROM (SELECT * FROM TEST WHERE NOME = 'Pietro' ORDER BY DATA DESC) WHERE ROWNUM <=1
    UNION SELECT * FROM (SELECT * FROM TEST WHERE NOME = 'Nicola' ORDER BY DATA DESC) WHERE ROWNUM <=1
    ) ORDER BY NOME
    Pietro

  9. #9
    SELECT T1.* FROM tabella T1 JOIN (select nome, max(data) as data from tabella group by nome) T2 ON T1.nome=T2.nome NA T1.data=T2.data

    vedi se po' anna' così

  10. #10
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da optime
    SELECT T1.* FROM tabella T1 JOIN (select nome, max(data) as data from tabella group by nome) T2 ON T1.nome=T2.nome NA T1.data=T2.data

    vedi se po' anna' così

    SELECT T1.* FROM TEST T1 JOIN (select nome, max(data) as data from TEST group by nome) T2 ON T1.nome=T2.nome NA T1.data=T2.data

    gli dà fastidio qualcosa credo NA (T2.nome NA ...

    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.