bit_and ergebnis ist vom Typ integer

Hallo,

ich mache eine Aggregat-Anfrage auf ein Set vom Typ bit(1) offenbar ist das Ergebnis ein integer und so wirklich casten lassen will es sich auch nicht…

INSERT INTO tabelle2 SELECT bit_and(bitattribut) as bitatribut FROM tabelle1 GROUP BY attr1;
--order auch dies hier:
INSERT INTO tabelle2 SELECT bit_and(bitattribut)::bit(1) as bitatribut FROM tabelle1 GROUP BY attr1;

Gibt den Fehler:
ERROR: column “bitattribut” is of type bit but expression is of type integer
SQL Status:42804
Hinweis:You will need to rewrite or cast the expression.

eigenartigerweise funktioniert dies hier:

SELECT bit_and(bitattribut)::bit(1) as bitatribut FROM tabelle1 GROUP BY attr1

Sieht da irgendwer n Fehler?
Viele Grüße
beho

Es wäre besser, Du nennst auch die Spalten dazu beim INSERT.

test=# \d b
       Table "public.b"
 Column |  Type   | Modifiers
--------+---------+-----------
 id     | integer |
 b      | bit(1)  |

test=# \d b2
      Table "public.b2"
 Column |  Type  | Modifiers
--------+--------+-----------
 b      | bit(1) |

test=# select * from b;
 id | b
----+---
  1 | 0
  2 | 1
  3 | 0
(3 rows)

test=*# select * from b2;
 b
---
(0 rows)

test=*# insert into b2 select bit_and(b) from b;
INSERT 0 1
test=*# select * from b2;
 b
---
 0
(1 row)

test=*# insert into b2 select bit_and(b) from b where id=2;
INSERT 0 1
test=*# select * from b2;
 b
---
 0
 1
(2 rows)



Gibt den Fehler:
ERROR: column “bitattribut” is of type bit but expression is of type integer
SQL Status:42804
Hinweis:You will need to rewrite or cast the expression.

Mmh, wir sehen nicht die Definition der Tabellen. Ich muß auch zugeben, mit diesen BIT-Typen keine Erfahrung zu haben.

Vielleicht stimmen nur die Datentypen bei Dir nicht.

Andreas

Hallo,

danke für die hinweise, hattes auch selbst schon gefunden, aber man kann die beiträge hier ja nicht löschen.
Ja, die Anordungen der Spalten stimmten nicht überein, so dass ich natürlich versucht hab eine Integer-Spalte in eine bit(1) Spalte zu schieben…

sry
beho