2014-11-14 11 views
5

Questa query funziona in PostgreSQL:Come tradurre la funzione array_agg di PostgreSQL in SQLite?

Select ot.MCode,array_to_string(array_agg(tk1.TName || ',' || ot.TTime), ' - ') as oujyu_name_list 
    From TR_A ot 
    inner join MS_B tk1 on ot.Code = tk1.Code 
    Where ot.Code in (Select Code From TR_C) 
    Group byot.MCode 

ma non funziona in SQLite, perché SQLite non ha la funzione di array_agg(). In che modo questa query può essere convertita in SQLite?

risposta

5

Per questa query, è possibile utilizzare group_concat, che restituisce direttamente una stringa:

SELECT ..., group_concat(tk1.TName || ',' || ot.TTime, ' - ') 
FROM ... 
+0

vale la pena di ricordare che a differenza della funzione array_agg, è necessario specificare la clausola group_by per GROUP_CONTACT, maggiori informazioni: http://stackoverflow.com/questions/22190200/query-using-group-concat-is-returning-only-one-row – younes0

+0

@ younes0 * Tutte le funzioni di aggregazione restituiscono una singola riga senza GROUP BY; non c'è differenza tra ARRAY_AGG e GROUP_CONCAT. –

+0

Hai ragione; Stavo parlando del caso specifico postgres che permette di omettere il group_by (se si interroga su una tabella immagino) – younes0

Problemi correlati