2017-01-04 2 views
0

Ich habe eine Tabelle wie folgt aus:Postgres - Ausbau spärliche Daten

x | y | f 
========= 
0 | 1 | 3.4 
1 | 2 | 3.5 

Nur bestimmte x- und y-Werte existieren in der Tabelle. PK ist x, y.

Ich möchte es erweitern, so dass alle X- und Y-Werte vorhanden sind. Für einen bereits vorhandenen Wert behalten Sie f. Für neue Zeilen setzen f = 0. Also, in den oben genannten, würden wir hinzufügen (0,0,0.0), (1,0,0.0), (1,1,0.0) usw.

ich denke, das mit irgendeiner Art JOIN generate_range getan werden kann, aber ich bin nicht sicher, wie es zu verursachen nur dann, wenn der Datensatz nicht in der ursprünglichen Tabelle vorhanden ist.

Antwort

1
INSERT INTO t (x, y, f) 
SELECT a.x, b.y, 0.0 
FROM 
    generate_series(0, 1000000) a(x) 
    CROSS JOIN generate_series(0, 1000000) b(y) 
    LEFT JOIN t ON 
    t.x = a.x AND t.y = b.y 
    WHERE t.x IS NULL 
+0

Kurz und süß! – SRobertJames