Query per la traslazione dati vert. - orizz.

di antocuomo il
9 risposte
Le soluzioni non sono mai sciocche, sono conosciute o sconosciute.

Ho una tabella con un centinaio di record costituita da due soli campi. ID e Contatto
Ogni tre record consecutivi, hanno lo stesso id di riferimento.
Voglio creare una query dove per ogni id io possa leggere i campi: Contatto1, Contatto2, Contatto3 allineati nello stesso record.

Che volete da me: ci sto perdendo la testa.
Mi date una mano se possibile?.
saluti
antonio

9 Risposte

  • Hai provato con una Query a campi INCROCIATI...?
    Asse x sono i campi da usare nelle righe... nel tuo caso avrai quel Campo che definisce il raggruppamento dei contatti... e come colonna il campo Contatti...

    Credo sia il risultato che vuoi... altrimenti Pubblica 6 Righe e vediamo...
  • Purtroppo non mi è sembrato molto comprensibile.
    Faccio un esempio:
    Nella tabella io ho:
    ID Contatto Tipo
    1....anto.cuomo@alice.it......1
    1....0823401401.................2
    1....3207766819.................3
    2....remo.labarca@tin.it.......1
    2....0824245674.................2
    3....giovanni.tizio@yahoo.it...1
    4....3338765734.................3

    Il risultato desiderato è:
    ID....mail..........................fisso............cell
    1....anto.cuomo@alice.it.....0823401401...3207766819
    2....remo.labarca@tin.it.....0824245674
    3....giovanni.tizio@yahoo.it
    4...................................................3338765734

    In tutti i miei tentativi, fatti con comunissime query di selezioni, mi vengono sempre più record per ogni ID.
  • Ma hai provato quello che ti ho detto...?

    P.s.quella tabella così com'è andrebbe ripensata ed i dati reinseriti dopo la modifica... ma se cerchi ù a soluzione di questo tipo immagino tu non possa farlo...
    Il mio suggerimento dovrebbe andare se tu provassi... ovviamente neesuno potrebbe discriminare se il campo è mail o telefono a meno che il progressivo finale non fosse indice di tipo...
  • antocuomo ha scritto:


    ...
    ID Contatto Tipo
    1....anto.cuomo@alice.it......1
    1....0823401401.................2
    1....3207766819.................3
    2....remo.labarca@tin.it.......1
    2....0824245674.................2
    3....giovanni.tizio@yahoo.it...1
    4....3338765734.................3

    Il risultato desiderato è:
    ID....mail..........................fisso............cell
    1....anto.cuomo@alice.it.....0823401401...3207766819
    2....remo.labarca@tin.it.....0824245674
    3....giovanni.tizio@yahoo.it
    4...................................................3338765734

    .....
    Per come sono strutturati i dati non sono convinto che una query a campi incrociati possa portare al risultato desiderato : comunque, tentare quella strada, risulterebbe un buon esercizio (per te).
    Se conosci l'inglese e conosci il VBa puoi prendere un grande spunto dalla funzione proposta da AllenBrowne.
  • max.riservo ha scritto:


    ....
    Per come sono strutturati i dati non sono convinto che una query a campi incrociati possa portare al risultato desiderato : comunque, tentare quella strada, risulterebbe un buon esercizio (per te).
    Se conosci l'inglese e conosci il VBa puoi prendere un grande spunto dalla funzione proposta da AllenBrowne.
    Mah... facendo una prova a me pare funzioni la CrossTabQuery....
    TRANSFORM First(ZTab1.Contatto) AS PrimoDiContatto
    SELECT ZTab1.ID
    FROM ZTab1
    GROUP BY ZTab1.ID
    PIVOT ZTab1.Tipo;
    
    Partendo dalla Tabella esposte, ottengo:
    
    ID	1				           2		    3
    1	anto.cuomo@alice.it		25658630	14236584
    2	remo.labarca@tin.it		788877889	
    3	giovanni.tizio@yahoo.it  222333	
    Mi pare esattamente il richiesto...
    Ovvio che, come dicevo se il campo TIPO avesse una definizione relazionata di tipo Descrittivo... avremmo il Descritto e non l'indice 1/2/3 nell'intestazione delle colonne...
  • Dopo il post di antocuomo del 24/9/2018 20:45 è più chiaro che ha ragione @Alex, ossia antocuomo vuole 3 colonne separate, quindi OK query a campi incrociati. Resta che il campo Tipo dovrebbe avere i valori espliciti "e-mail", "fisso", "cell"... Oppure potresti rinominare i singoli 3 campi direttamente nella query.
  • @Alex ha scritto:


    Mah... facendo una prova a me pare funzioni la CrossTabQuery....
    Che dire ... mi ero già immaginato una funzione di Concat perchè dubitavo della CrossTab ... invece era più semplice di quello che avrei fatto io.
    Buono per AntonioCuomo che si trova il risultato sperato con il minimo sforzo.
  • Non ho parole.
    Abbiamo veramente rasentato il geroglifico ed io ho ottenuto il risultato desiderato.
    Mi sento protetto come in una chiesa e mai abbandonato.
    Grazie infinite.
    antonio cuomo
Devi accedere o registrarti per scrivere nel forum
9 risposte