Estrarre più righe in una

di il
7 risposte

Estrarre più righe in una

Buongiorno a tutti, avrei questa necessità:
data questa tabella:
Tabella di partenza
Tabella di partenza

dovrei estrarre i dati in modo che vengano rappresentati in un'unica riga a parità di campo "numero", ovvero così:
Risultato voluto
Risultato voluto

Mi potreste indicare come procedere?

Ringrazio chi mi aiuterà

7 Risposte

  • Re: Estrarre più righe in una

    Io rivaluterei la struttura della tabella... Troverei più sensata una struttra del tipo:
    NUMERO
    CAMPO (Qui ci salvi Campo1, Campo2, ecc...)
    OK (un semplice bit: 1= OK, NULL = NOOK)
    SETT
    ANNO
    Se così non puoi, devi studiare di implementare una funzione che ritorni un valore tabellare, per come te lo aspetti...
    Si potrebbe fare con dei JOIN, ma per tutti quei campi comincia a diventare difficile.
  • Re: Estrarre più righe in una

    Non si capisce cosa vuoi;
    per esempio, se a parità di numero hai su un record campo1=OK e su un altro KO
    quale dovrebbe essere il risultato?
    ... e se fossero diversi anche altri valori ?
  • Re: Estrarre più righe in una

    sspintux ha scritto:


    Non si capisce cosa vuoi;
    per esempio, se a parità di numero hai su un record campo1=OK e su un altro KO
    quale dovrebbe essere il risultato?
    ... e se fossero diversi anche altri valori ?
    I campi da campo1 a campo7 possono assumere solo valore OK o vuoto, quello che vorrei è che se ci sono più righe con lo stesso valore del campo numero anzichè estrarle in n righe estrarle in una unica riga che contenga tutti i valori OK dei campi dall'1 al 7.
    Spero di essermi spiegato meglio
  • Re: Estrarre più righe in una

    ... e se a parità di numero fossero diversi gli altri campi SETT ed ANNO ?

    cmq, direi di seguire il consiglio di Sgrubak
  • Re: Estrarre più righe in una

    sspintux ha scritto:


    ... e se a parità di numero fossero diversi gli altri campi SET ed ANNO ?

    cmq, direi di seguire il consiglio di Sgrubak
    NUMERO,SET E ANNO sono sempre uguali in quanto sono una stringa divisa su tre campi
  • Re: Estrarre più righe in una

    kkzan ha scritto:


    NUMERO,SET E ANNO sono sempre uguali in quanto sono una stringa divisa su tre campi
    per curiosità,
    ma chi carica questi dati non può semplicemete aggiornarli come nel risultato della query che chiedi ?
  • Re: Estrarre più righe in una

    Salve,
    brutalmente, puoi fare una rotazione usando in questo caso ad esempio direttamente MAX(Colonna) e raggruppando per Numero, Anno, Sett,
    trivialmente:
    
    SELECT t.Numero,
    	MAX(t.Campo1) AS Campo1,
    	MAX(t.Campo2) AS Campo2,
    	MAX(t.Campo3) AS Campo3,
    	MAX(t.Campo4) AS Campo4,
    	MAX(t.Campo5) AS Campo5,
    	MAX(t.Campo6) AS Campo6,
    	MAX(t.Campo7) AS Campo7,
    	t.Sett,
    	t.Anno
    	FROM dbo.t t
    	GROUP BY t.Numero, t.Anno, t.Sett;
    
    ovviamente una situazione tipo
    100000, 'OK', blank, blank, blank, blank, blank, blank, 14, 2021
    100000, 'OK', blank, blank, blank, blank, blank, blank, 14, 2021
    cioe' con 2 o piu' righe che abbiano la medesima valorizzazione in uno o piu' colonne di stato (le tue CampoN) non darebbero una "doppia" valorizzazione, e puo' aver senso come no...

    in ogni caso, come gia' ti hanno indicato, la normalizzazione della struttura e' poco incoraggiante... sicuramente questo e' un esempio estratto da uno scenario piu' complesso, ma qui avrei in effetti difficolta' a vedere una chiave primaria surrogata se non con tutti gli attributi dell'entita'... e quella primaria non l'hai indicata...

    salutoni romagnoli
    --
    Andrea
Devi accedere o registrarti per scrivere nel forum
7 risposte