So ersetzen Sie die Nullen mit Nullen in postgresql Kreuztabellen

Habe ich eine Produkt-Tabelle mit produkt_id und 100+ Attribute. Die product_id ist der text in der Erwägung, dass die Attribut-Spalten sind integer, also 1, wenn das Attribut vorhanden ist. Wenn der Postgresql Kreuztabelle ist auszuführen, bei nicht übereinstimmenden atrributes Rückgabe von null-Werten. Wie Ersetze ich die null-Werte mit Nullen statt.

SELECT ct.*
INTO ct3
FROM crosstab(
'SELECT account_number, attr_name, sub FROM products ORDER BY 1,2',
'SELECT DISTINCT attr_name FROM attr_names ORDER BY 1')
AS ct(
account_number text,
Attr1 integer,
Attr2 integer,
Attr3 integer,
Attr4 integer,
...
)

Ersetzen dieses Ergebnis:

account_number  Attr1   Attr2   Attr3   Attr4
1.00000001  1   null    null    null
1.00000002      null    null    1   null
1.00000003  null    null    1   null
1.00000004  1   null    null    null
1.00000005  1   null    null    null
1.00000006  null    null    null    1
1.00000007  1   null    null    null

mit unter:

account_number  Attr1   Attr2   Attr3   Attr4
1.00000001  1   0   0   0
1.00000002  0   0   1   0
1.00000003  0   0   1   0
1.00000004  1   0   0   0
1.00000005  1   0   0   0
1.00000006  0   0   0   1
1.00000007  1   0   0   0

Workaround wäre eine select account_number, coalesce(Attr1,0)... auf das Ergebnis. Aber die Eingabe, verschmelzen Sie für jede der 100+ Spalten ist eher unyieldly. Gibt es eine Möglichkeit, dies zu behandeln mit der Kreuztabelle? Dank

InformationsquelleAutor Mike | 2011-06-15
Schreibe einen Kommentar