Query per la traslazione dati vert. - orizz.

di il
9 risposte

Query per la traslazione dati vert. - orizz.

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

  • Re: Query per la traslazione dati vert. - orizz.

    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...
  • Re: Query per la traslazione dati vert. - orizz.

    Una alternativa potrebbe essere quella di "concatenare" in un unico campo...ma dipende cosa vuoi "esattamente". Al riguardo leggi qui
    http://allenbrowne.com/func-concat.htm
  • Re: Query per la traslazione dati vert. - orizz.

    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.
  • Re: Query per la traslazione dati vert. - orizz.

    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...
  • Re: Query per la traslazione dati vert. - orizz.

    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.
  • Re: Query per la traslazione dati vert. - orizz.

    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...
  • Re: Query per la traslazione dati vert. - orizz.

    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.
  • Re: Query per la traslazione dati vert. - orizz.

    @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.
  • Re: Query per la traslazione dati vert. - orizz.

    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