folgendes Problem:
select ep.partner_id as neu, cast(vpd2.partner_id as
numeric) as alt
from extref_partner ep,
(select cast(r.dublettenklasse as numeric) as
dublettenklasse1, cast(r.partner_id as numeric) as
partner_id, p.dt_ae, z.kunde_seit, z.druckdatum_stammsatz
from import.dbo.stammdaten_mp2_rest r, partner p,
zusatzinfo z
where dublettenklasse in (
select dublettenklasse from
import.dbo.stammdaten_mp2_rest
where partner_id <> ''
group by dublettenklasse
having count(partner_id) > 1 )
and r.partner_id = cast(p.partner_id as varchar)
and r.partner_id = cast(z.partner_id as varchar)) vpd1,
(select cast(r.dublettenklasse as numeric) as
dublettenklasse2, cast(r.partner_id as numeric) as
partner_id, p.dt_ae, z.kunde_seit, z.druckdatum_stammsatz
from import.dbo.stammdaten_mp2_rest r, partner p,
zusatzinfo z
where dublettenklasse in (
select dublettenklasse from
import.dbo.stammdaten_mp2_rest
where partner_id <> ''
group by dublettenklasse
having count(partner_id) > 1 )
and r.partner_id = cast(p.partner_id as varchar)
and r.partner_id = cast(z.partner_id as varchar)) vpd2
where ep.partner_id = vpd1.partner_id
and vpd1.dublettenklasse1 = vpd2.dublettenklasse2
-- HIER IST DAS PROBLEM ------------------------
--and vpd1.dublettenklasse = vpd2.dublettenklasse
-- ---------------------------------------------
and vpd1.dt_ae = vpd2.dt_ae
liefert:
Server: Nachr.-Nr. 8114, Schweregrad 16, Status 5, Zeile 1
Fehler beim Konvertieren von Datentyp varchar in numeric.
Ursprünglich handelt es sich um varchars, selbst ein
direkter varchar-Vergleich führt zu dieser Fehlermeldung.
Es gibt definitiv keine Dublettenklasse, die ein nicht-
Numerisches Zeichen enthält. Auch sämtliche Cast-Versuche
schlugen Fehl. Vergleiche, in welchen ich
vpd1.dublettenklasse1 durch eine Zahl ersetzt habe (z.b.
158442) Funktionieren, umgekehrt auch. Nur der Vergleich
wie oben geht schief. Ich befürchte einen MS-Bug??? Kann
mir jemand helfen??
Torsten Katthöfer <torsten.k...@tietoenator.com> schrieb ...
> folgendes Problem:
>
> and vpd1.dublettenklasse1 = vpd2.dublettenklasse2
> -- HIER IST DAS PROBLEM ------------------------
> --and vpd1.dublettenklasse = vpd2.dublettenklasse
> -- ---------------------------------------------
> and vpd1.dt_ae = vpd2.dt_ae
>
> liefert:
> Server: Nachr.-Nr. 8114, Schweregrad 16, Status 5, Zeile 1
> Fehler beim Konvertieren von Datentyp varchar in numeric.
>
> Ursprünglich handelt es sich um varchars, selbst ein
> direkter varchar-Vergleich führt zu dieser Fehlermeldung.
> Es gibt definitiv keine Dublettenklasse, die ein nicht-
> Numerisches Zeichen enthält. Auch sämtliche Cast-Versuche
> schlugen Fehl. Vergleiche, in welchen ich
> vpd1.dublettenklasse1 durch eine Zahl ersetzt habe (z.b.
> 158442) Funktionieren, umgekehrt auch. Nur der Vergleich
> wie oben geht schief. Ich befürchte einen MS-Bug??? Kann
> mir jemand helfen??
Ohne den Tabellenaufbau (und auch ohne Daten) ist das
ein bissel viel Raterei, aber:
Mache mal einen Test mit ISNUMERIC () auf die
"fehlerbehaftete" Spalte.
Auch solltest Du ein explizites CAST (... as numeric)
für den Vergleich wählen.
Je nach Dateninhalt geht evtl. aber auch der andere
Weg, also ein CAST auf varchar für die numerische
Spalte bzw. der Einsatz von STR()
Gruss
Elmar