Group By con Alias condizionale

  • Creatore Discussione Creatore Discussione fastech
  • Data di inizio Data di inizio

fastech

Nuovo Utente
18 Feb 2021
3
0
1
Ciao a tutti, premesso che sono un novizio con MySQL, cerco di semplificare il più possibile il mio problema:

Tabella.DB
Campo1Campo2DataCodiceGestione
ABC-12317/02/2021
DEF-456ABC-12318/02/2021Codice X
GHI-678LMN-90116/02/2021Codice Y
LMN-90115/02/2021


Desiderata
PadreFiglioDataCodice Gestione
ABC-123DEF-45618/02/2021Codice X
GHI-678LMN-90116/02/2021Codice Y


Risultato ottenuto con la query sottostante:
PadreFiglioDataCodice Gestione
ABC-12317/02/2021
LMN-90115/02/2021

SELECT
if (campo2 IS NULL, campo1, campo2) AS Padre,
Campo2 AS Figlio,
Data,
CodiceGestione
FROM
tabella.DB
GROUP BY
Padre
HAVING
MAX(Data)


Mi sarei aspettato che il group by avesse funzionato con l'alias, ma evidentemente fa logica su campo1 e campo2 e non sull'alias.
Se ho ben capito il group by funziona se l'alias assume il valore di un singolo campo, ma se invece assume alternativamente il valore di due campi occorrono altre soluzioni.
Immagino che il raggruppamento funzionerebbe se, al posto dell'alias, creassi un ulteriore campo virtuale che assume il valore di campo 1 e 2 a seconda della condizione impostata nell'IF, ma non riesco a capire come fare.

Spero di esser stato chiaro e vi ringrazio in anticipo
 
Ho commesso un errore nel riportare la seconda riga della mia query.
La riscrivo qui di seguito perchè non riestro a modifica il primo post:

SELECT
if (campo2 IS NULL, campo1, campo2) AS Padre,
if (campo2 IS NULL, campo2, campo1) AS Figlio,
Data,
CodiceGestione
FROM
tabella.DB
GROUP BY
Padre
HAVING
MAX(Data)
 

Discussioni simili