Mi chiedo se c'è un modo canonico per convertire i dati da lungo a grande formato a SQLite (è che il funzionamento di solito nel dominio dei database relazionali?). Ho provato a seguire this example per MySQL ma immagino che SQLite non abbia lo stesso costrutto IF ... Grazie!SQLite formati da lunghi a larghi?
11
A
risposta
12
IF
è un'estensione non standard di MySQL. E 'meglio usare sempre CASE
che è SQL standard e funziona in tutti i database compatibili, tra cui SQLite e MySQL (e MSSQL, Oracle, Postgres, Access, Sybase ... e così via).
Ecco un esempio di come fare la stessa query con CASE
:
SELECT Country,
MAX(CASE WHEN Key = 'President' THEN Value ELSE NULL END) President,
MAX(CASE WHEN Key = 'Currency' THEN Value ELSE NULL END) Currency
FROM Long
GROUP BY Country
ORDER BY Country;
Ecco un altro modo per rappresentare la stessa query utilizzando unisce. Penso che questo è probabilmente più efficace, ma assume c'è solo un record per ogni valore della chiave all'interno di ogni gruppo (la versione CASE
non troppo, ma non si tradurrà in righe in più se questo non è vero, solo i risultati tutt'altro che prevedibile).
SELECT
D.Country,
P.Value President,
C.Value Currency
FROM
(
SELECT DISTINCT Country
FROM Long
) D
INNER JOIN
( SELECT Country, Value
FROM Long
WHERE Key = 'President'
) P
ON
D.Country = P.Country
INNER JOIN
( SELECT Country, Value
FROM Long
WHERE Key = 'Currency'
) C
ON
D.Country = C.Country
ORDER BY
D.Country;
E per la cronaca, ecco il DDL e dati di test usavo:
CREATE TABLE Long (ID INTEGER PRIMARY KEY AUTOINCREMENT, Country TEXT, Key TEXT, Value TEXT);
INSERT INTO Long VALUES (NULL, 'USA', 'President', 'Obama');
INSERT INTO Long VALUES (NULL, 'USA', 'Currency', 'Dollar');
INSERT INTO Long VALUES (NULL, 'China', 'President', 'Hu');
INSERT INTO Long VALUES (NULL, 'China', 'Currency', 'Yuan');
Problemi correlati
- 1. Formati supportati da BitmapFactory.decodeByteArray (...)
- 2. esportazione dati da excel a database sqlite
- 3. Come accedere a SQLite da VBA?
- 4. Crea automaticamente directory da percorsi lunghi
- 5. Formati supportati da ImageMagick senza valore
- 6. Formati di file supportati da UIWebView
- 7. Prestazioni di ID lunghi
- 8. Suggerimenti lunghi ListBox voci
- 9. Expandablelistview estende simplecursoradapter da popolare da sqlite
- 10. errore log sqlite non riuscito a caricare da /cachedGeoposition.db
- 11. Moltiplicando valori lunghi?
- 12. Come connettere Dart a SQLite?
- 13. Seleziona da SQLite con Qt
- 14. C++: caratteri larghi che escono in modo errato?
- 15. Perché supporto Array.Copy Argomenti lunghi
- 16. Invio di messaggi sms lunghi
- 17. Programmatori JSON iteratori molto lunghi
- 18. Test unitario con ingressi lunghi
- 19. Formati data per settimane
- 20. SQLite Partecipa a Windows 8 Metro C# con sqlite-net
- 21. sqlite android sqlite sincronizzazione sqlite
- 22. perché non riesci a numpy calcolare oggetti lunghi?
- 23. come sincronizzare sqlite a Mysql
- 24. Java JUnit assertEquals con lunghi
- 25. Formati di file di ricamo?
- 26. formati supportati mediaelement.js
- 27. before_filter e respond_to formati
- 28. Quali formati di immagine sono supportati da CANVAS in html5?
- 29. Converti tzdata in altri formati?
- 30. Formati data di modifica Excel
molto utile !! Grazie - Ho bisogno di più tempo per il tuo secondo esempio, ma questo espande davvero le mie conoscenze SQL! – hatmatrix