Group by con alias

di il
2 risposte

Group by con alias

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

2 Risposte

  • Re: Group by con alias

    IF (Espressione,Vero,Falso)
    ergo
    if (campo2 IS NULL, campo1, campo2) AS Padre,
    1) se non c'e' figlio allora padre

    if (campo2 IS NULL, campo2, campo1) AS Figlio,
    2) se non c'e' figlio allora figlio.... quindi null?

    risultato:
    primo record: non c'e' figlio quindi padre; non c'e' figlio quindi null;
    infatti il primo record e'
    Padre Figlio Data Codice Gestione
    ABC-123 17/02/2021

    secondo record: c'e' figlio quindi padre; c'e' figlio quindi figlio
    Padre Figlio Data Codice Gestione
    DEF-456 ABC-123 18/02/2021 Codice X

    ma la domanda e': in base a cosa raggruppare? sono tutti valori eterogenei...
  • Re: Group by con alias

    Prova
    if (campo2 is not null, campo2) as padre
    if (campo2 is not null, campo1) as figlio
    If (campo2 is null, campo1) as padre
    If (campo2 is null, campo2) as figlio
Devi accedere o registrarti per scrivere nel forum
2 risposte