UNION Fehler nicht korrespondierende Datentypen

Auswertung von Daten aus Mykene

UNION Fehler nicht korrespondierende Datentypen

Beitragvon sdbler » 07.07.2010 09:36

Hallo, ich versuche hier grade zwei SELECT Abfragen mit UNION zu verbinden, leider wird bemängelt das die Datentypen nicht übereinstimmen, es soll aber doch nur das leere Feld mit der anderen Abfrage gefüllt werden. Was muss da geändert werden?

Code: Alles auswählen
select trunc(HIS.HIS_START)
as "Datum"
,'' as "DB_RR_Basis"
, sum(case when HIS.CAM_ID in (799)  and HIS.RES_ID in (1006) then 1 else 0 end)
as "Kunde mit Bestellung"
,'' as "Sofortbestellung Ja"

from ts$_customer CUST
,ts$_supplement_344 CUST_SUP
,ts$_history HIS

where 1=1
and CUST.MAN_ID = 344
and HIS.PROJ_ID = 468
and CUST.man_id=CUST_SUP.man_id(+)
and CUST.cust_id=CUST_SUP.cust_id(+)
and CUST.man_id=HIS.man_id(+)
and CUST.cust_id=HIS.cust_id(+)

group by trunc (HIS.HIS_START)

UNION

select trunc(HIS.HIS_START) as "Datum"
,'' as "DB_RR_Basis"
,''  as "Kunde mit Bestellung"
, sum(case when HIS.CAM_ID in (799)  and HIS.RES_ID in (1006) then 1 else 0 end)
as "Sofortbestellung Ja"

from ts$_customer CUST
,ts$_supplement_344 CUST_SUP
,ts$_history HIS

where 1=1
and CUST.MAN_ID = 344
and HIS.PROJ_ID = 468
and CUST_SUP.STRNEINKS = 'Ja - Umstellung auf Komfort'
and CUST.man_id=CUST_SUP.man_id(+)
and CUST.cust_id=CUST_SUP.cust_id(+)
and CUST.man_id=HIS.man_id(+)
and CUST.cust_id=HIS.cust_id(+)

group by trunc (HIS.HIS_START)

 


Viele Grüße Stefan
sdbler
 
Beiträge: 60
Registriert: 02.04.2007 08:04
Wohnort: Kröslin / MV

Re: UNION Fehler nicht korrespondierende Datentypen

Beitragvon oliver.schulz » 07.07.2010 09:43

Hilfe zur Selbsthilfe ;)
schau dir deine beiden Feldlisten an, dann sollte dir der Fehler auffallen
Code: Alles auswählen
select trunc(HIS.HIS_START)
as "Datum"
,'' as "DB_RR_Basis"
, sum(case when HIS.CAM_ID in (799)  and HIS.RES_ID in (1006) then 1 else 0 end)
as "Kunde mit Bestellung"
,'' as "Sofortbestellung Ja"


Code: Alles auswählen
select trunc(HIS.HIS_START) as "Datum"
,'' as "DB_RR_Basis"
,''  as "Kunde mit Bestellung"
, sum(case when HIS.CAM_ID in (799)  and HIS.RES_ID in (1006) then 1 else 0 end)
as "Sofortbestellung Ja"


Ok ich geb dir nen Tipp. Du versuchst in der ersten Liste ein Feld vom Typ "Number" mit in der zweiten Liste einem Feld Typ "Varchar" zu verbinden. bzw auch umgekehrt beim letzten Feld. Das funktioniert bei einem Union nicht. Dort müssen die Feldtypen exakt gleich sein.
Mit freundlichen Grüssen

Oliver Schulz
MYCOM AG
oliver.schulz
 
Beiträge: 55
Registriert: 25.09.2006 13:34
Wohnort: Cottbus

Re: UNION Fehler nicht korrespondierende Datentypen

Beitragvon sdbler » 07.07.2010 10:12

Danke Danke, hilfe zur Selbsthilfe ist immer am besten: to_number, to_char stand auch schon in der Oracle-Hilfe aber ich dachte das gilt nicht für "leere" Felder.

Also nochmal vielen Dank :wink:
sdbler
 
Beiträge: 60
Registriert: 02.04.2007 08:04
Wohnort: Kröslin / MV

Re: UNION Fehler nicht korrespondierende Datentypen

Beitragvon till.piantek » 07.07.2010 10:19

Hallo,

eine einfachere Variante wäre wahrscheinlich einfach anstatt von
,'' as "Sofortbestellung Ja"
,null as "Sofortbestellung Ja"

MFG
Till Piantek
Mit freundlichen Grüssen

Till Piantek
MYCOM AG
till.piantek
 
Beiträge: 10
Registriert: 07.06.2007 13:47
Wohnort: Cottbus

Re: UNION Fehler nicht korrespondierende Datentypen

Beitragvon sdbler » 08.07.2010 09:09

NULL AS kannte ich gar nicht aber damit funktioniert es auch und es ist weniger Schreibkram oder wirkt es sich auch positiv auf die Performance aus wenn nicht die Datentypen umgewandelt werden?
sdbler
 
Beiträge: 60
Registriert: 02.04.2007 08:04
Wohnort: Kröslin / MV

Re: UNION Fehler nicht korrespondierende Datentypen

Beitragvon till.piantek » 09.07.2010 09:06

Hallo,

null ist Typenneutral und kann stets in solchen Fällen verwendet werden.
Auch performance-seitig ist es die bessere Alternative.
Mit freundlichen Grüssen

Till Piantek
MYCOM AG
till.piantek
 
Beiträge: 10
Registriert: 07.06.2007 13:47
Wohnort: Cottbus


Zurück zu Reporting

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron