Union verursacht eine ORA-01790: Ausdruck muss denselben Datentyp wie die korrespondierende Ausdruck

Durch die folgende Abfrage als Beispiel:

  select p.product_id, p.product_name, 
     product_type as product_type,
      from products
    group by p.product_id, p.product_name
  union
    select p.product_id, p.product_name, 
     cast(collect(coalesce(product_type, decode(product_description,null,'DESCR' || '-' product_description) as my_type) as product_type,
    from products
    group by p.product_id, p.product_name

Die select-Anweisung in der ersten Abfrage gibt product_type als varchar und auf die zweite Abfrage product_type ist der Typ my_type.
Diese verursacht und ORA-01790: Ausdruck muss denselben Datentyp wie die korrespondierende Ausdruck, weil die Datentypen nicht gleich sind.

Ist es möglich zu casten product_type auf die erste Abfrage zu sein, der Typ my_type?

Ich versucht, die änderung der ersten Abfrage, wie unten dargestellt, aber ohne Glück.

select p.product_id, p.product_name, 
     cast(product_type as my_type) as product_type,
     decode(product_source_location, null, 'NO_SOURCE', product_source_location)
    from products
    group by p.product_id, p.product_name

Bearbeiten

my_type ist definiert als 'TYPE "my_type" AS TABLE OF varchar2(4000)'

Ist es möglich? Was passiert, wenn du versucht? Wenn nicht, können Sie ausführen ein to_char auf die my_type Feld?
Wenn ich es versuchte, es gab mir ein [1]: ORA-00902: ungültige Datentyp-Fehler.
Was ist my_type?
my_type ist definiert als " TYP "my_type" AS TABLE OF varchar2(4000)'
Ich bezweifle, dass die erste WÄHLEN, ist korrekt, da weder product_type noch product_source_location sind Teil der GRUPPE.

InformationsquelleAutor ziggy | 2013-02-14

Schreibe einen Kommentar