2016-07-22 7 views
1

I haben Tisch wie:Auswählen von Daten aus zwei Spalten als Array in einer Spalte sortiert und in einer anderen Spalte gruppiert

CREATE TABLE IF NOT EXISTS "points" (
    "id" INTEGER NOT NULL, 
    "lat" DOUBLE PRECISION NOT NULL, 
    "lon" DOUBLE PRECISION NOT NULL 
); 

INSERT INTO "points" ("id", "lat", "lon") VALUES 
    (1,51.11,-0.11), 
    (2,51.12,-0.12), 
    (3,51.13,-0.13), 
    (4,51.14,-0.14), 
    (5,52.44,-2.44), 
    (6,52.45,-2.45), 
    (7,52.46,-2.46), 
    (8,52.47,-2.47); 

Wie wählen Daten aus zwei Säulen (lat, lon) als JSON Array aus Tabelle mit Sortierung in eine Spalte (id)? Das Ergebnis sollte sein:

[ 
    [51.11,-0.11],[51.12,-0.12], 
    [51.13,-0.13],[51.14,-0.14], 
    [44,-2.44],[52.45,-2.45], 
    [52.46,-2.46],[52.47,-2.47] 
] 
+0

Das gewünschte Ergebnis nicht Gruppe. Was meinst du mit Gruppierung? –

+0

@ClodoaldoNETO Ich habe die Frage bearbeitet - Gruppierung nicht nötig, nur sortieren. – HasT

Antwort

1
select to_json(array_agg(array[lat,lon] order by id)) 
from points 
; 
                 to_json              
------------------------------------------------------------------------------------------------------------------- 
[[51.11,-0.11],[51.12,-0.12],[51.13,-0.13],[51.14,-0.14],[52.44,-2.44],[52.45,-2.45],[52.46,-2.46],[52.47,-2.47]] 
Verwandte Themen