numerazione righe in query access

Anonimo
2020-04-20T11:50:57+00:00

Buongiorno a tutti,

avrei bisogno di un aiuto per risolvere questo problema.... ho un tabella di partenza (generata da altre query) con campi alfanumerici che non ha il campo ID ed è già ordinata correttamente:

Reparto attività
abc123 AB123
abc123 AB456
cba321 CC367
cba321 CD344
cba321 AB999
def111 ZZ746

dovrei aggiungere una colonna che mi vada a numerare in ordine crescente le righe utilizzando il campo [attività] come univoco e il campo [reparto] per il raggruppamento, ottenendo:

Reparto attività Posizione
abc123 AB123 1
abc123 AB456 2
cba321 CC367 1
cba321 CD344 2
cba321 AB999 3
def111 ZZ746 1

ho visto che molti suggeriscono di utilizzare Dcount, ma in riferimento alla colonna ID che io non ho e che comunque nel mio caso non sarebbe utile.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

7 risposte

Ordina per: Più utili
  1. Anonimo
    2020-04-20T17:13:26+00:00

    ....ti serve un tie breaker perche' a reparto uguale corrispondo attivita' che in qualche modo bisogna ordinare per la numerazione progressiva.

    Chiaro e' che postando la tabella che ci hai mostrato in precedenza, possiamo/posso ragionare in base a quanto si vede e non a quanto si dovrebbe...vedere.

    quale e' il criterio per il quale AB1X3 viene prima di AA4A6?  lo stesso per CC344 prima di AB999?

    Buon lavoro.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-04-20T15:54:17+00:00

    la soluzione a quanto vedo si bassa sull'utilizzo di una parte del dato "attività" per definire un ordine, in realtà non c'è nessun criterio, ho usato dei dati generici e alfanumerici per dire che sono campi "testo breve" al cui interno può esserci una stringa di qualsiasi tipo.

    potrei infatti avere anche:

    Reparto attività Posizione
    abc123 AB1X3 1
    abc123 AA4A6 2
    cba321 CC344 1
    cba321 AB999 2
    cba321 CC367 3
    def111 ZZ746 1

    grazie infinite per l'aiuto

    l'obiettivo è quello di avere in "posizione" il numero crescente per reparto, ma la funzione deve far affidamento sulla posizione del campo "attività" ma non sul suo contenuto

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-04-20T14:45:50+00:00

    data la tabella :

    ottengo :

    con il predicato che segue :

    SELECT

            Tabella1.reparto,

            Tabella1.attivita, 

            (select count(reparto) from (select distinct reparto, attivita from tabella1 as T) where t.reparto=tabella1.reparto and 

           clng(right$(t.attivita,3))<=clng(right$(tabella1.attivita,3))) AS PR_DAT,

           Left([reparto],3) AS IndA,

           Right$([attivita],3) AS indR

    FROM

            Tabella1

    ORDER BY

        Left([reparto],3),

        Right$([attivita],3);

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-04-20T13:59:15+00:00

    In una tabella non esiste un ordine per definizione si tratta di un set ed in quanto tale è privo di ordinamento per defininzione.

    Vedi se questo 3d ti aiuta, abbiamo trattato lo stesso argomento :

    https://answers.microsoft.com/it-it/msoffice/forum/all/numerare-progressivamente-record-uguali-su-tabella/3fb89e90-17fb-4d91-8985-12f6c1385414

    Il predicato necessita di un minimo di adattamento rispetto al tuo scenario, ma veramente minimale.

    ciao, Sandro

    grazie, 

    ho adattato l'istruzione alla mia tabella, ma il risultato non è quello atteso....

    riga: (select count([reparto]) from (select  distinct [reparto], [attività] from [tabella1] as T) where t.[reparto]=[tabella1].[reparto] and t.[attività]<=[tabella1].[attività])

    mi viene restituito questo risultato:

    Reparto attività riga (risultato istruzione) riga (risultato desiderato)
    abc123 a3 3 1
    abc123 a5 5 2
    abc123 a6 6 3
    abc123 a4 4 4
    abc123 a1 1 5
    abc123 a2 2 6

    praticamente l'ordine viene attribuito in ordine alfabetico e non in base alla posizione della riga....

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2020-04-20T11:57:58+00:00

    In una tabella non esiste un ordine per definizione si tratta di un set ed in quanto tale è privo di ordinamento per defininzione.

    Vedi se questo 3d ti aiuta, abbiamo trattato lo stesso argomento :

    https://answers.microsoft.com/it-it/msoffice/forum/all/numerare-progressivamente-record-uguali-su-tabella/3fb89e90-17fb-4d91-8985-12f6c1385414

    Il predicato necessita di un minimo di adattamento rispetto al tuo scenario, ma veramente minimale.

    ciao, Sandro

    La risposta è stata utile?

    0 commenti Nessun commento