Ciao a tutti, premesso che sono un novizio, cerco di semplificare il possibile il mio problema.
In ambito CRM, ho dei record nei quali risiedono dati di ticket identificati da un codice padre e a volte anche da un codice figlio.
Se il codice figlio non è presente, il codice padre risiede in Campo 1, altrimenti se presente, il codice figlio è in campo 1 e il codice padre in campo 2.
Questo il problema:
Tabella.DB
Campo1 Campo2 Data CodiceGestione
ABC-123 17/02/2021
DEF-456 ABC-123 18/02/2021 Codice X
GHI-678 LMN-901 16/02/2021 Codice Y
LMN-901 15/02/2021
ZXY-345 12/01/2021 Codice Z
Risultato atteso:
Padre Figlio Data Codice Gestione
ABC-123 DEF-456 18/02/2021 Codice X
GHI-678 LMN-901 16/02/2021 Codice Y
ZXY-345 12/01/2021 Codice Z
Risultato ottenuto:
Padre Figlio Data Codice Gestione
ABC-123 17/02/2021
DEF-456 ABC-123 18/02/2021 Codice X
GHI-678 LMN-901 16/02/2021 Codice Y
Query:
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)
Nella query mi sarei aspettato che il group by avesse funzionato con l'alias, ma evidentemente fa logica su campo1 e campo2 e non sull'alias.
Pertanto tende a raggruppare
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.
Spero di esser stato chiaro e vi ringrazio in anticipo