Dies ist die problematische Abfrage:
SELECT x.Firma, BestLA, BestSAP, (MatnrLA-MatnrSAP) AS DeltaMatnr,
cast ((Menge*PreisLA)-(menge*PreisEur) as smallmoney) DeltaWert,
MatnrLA, MatNrSAP, PreisLA, (PreisEUR) PreisSAP ,chrfile,
Rechnr, Menge, Ztext, x.WERK, (menge*Preiseur) AS WertSAP, (menge*PreisLA) AS WertLA,
(cast (Kostl as numeric) - cast (KostlLA as numeric)) DeltaKostl, KostlLA, (Kostl) KostlSAP, Jahr FROM (
SELECT bestellmaster.Firma, (kinfo+'P'+ cast (tblla.Bestpos as varchar)) BestLa,
isnull (Bestellung+'P'+bestellmaster.Bestpos,0) BestSAP,
isnull(cast (Matnr as int),0) MatnrLA, isnull(cast(MatNr_ISL as int),0) MatNrSAP,
(Preis) PreisLA, chrfile, Rechnr,neu, Netwr, Menge, Kzsrg, Bemerkung, year (erdat) Jahr,
Ztext, isnull (PreisEUR,0) PreisEUR , Bestellmaster.WERK, case (idenr)
when '.' then '0'
else (idenr)
end KostlLA FROM tblLA
left join bestellmaster on (kinfo+'P'+ cast (tblla.Bestpos as varchar)) = (Bestellung+'P'+bestellmaster.Bestpos)
and kundennr = Kunnr and year (erdat) = Jahr
WHERE Kzsrg='R' aND neu='J'
and year (erdat) = '2002'
aND Bemerkung Is Null) x
left join stammdaten.dbo.tblkostl on x.Jahr <= year (datbi) and x.Jahr >= year (datab)
and x.KostlLA = stammdaten.dbo.tblkostl.Kostl
and x.firma = stammdaten.dbo.tblkostl.firma
WHERE (PreisLA-PreisEUR) > 0.01
Or (PreisLA-PreisEUR) < -0.01
OR (Kostl-KostlLA) Is Null
OR (Kostl-KostlLA) <> '0'
OR BestSAP Is Null
OR (MatnrLA-MatnrSAP)<> '0'
OR (menge*preisLA)-(menge*Preiseur) > 0.01
Or (menge*preisLA)-(menge*Preiseur) < -0.01
Die Abfrage meldet einen Fehler wegen Subtraktion von varchar.
Kostl und KostlLA wurden auf varchar umgestellt, da sie nicht mehr rein numerische sondern nun alphanumerische werte enthalten. wie kann ich die Funktion der Abfrage erhalten, wenn ich nun alphanumerische Werte benutzen muss?
SELECT x.Firma, BestLA, BestSAP, (MatnrLA-MatnrSAP) AS DeltaMatnr,
cast ((Menge*PreisLA)-(menge*PreisEur) as smallmoney) DeltaWert,
MatnrLA, MatNrSAP, PreisLA, (PreisEUR) PreisSAP ,chrfile,
Rechnr, Menge, Ztext, x.WERK, (menge*Preiseur) AS WertSAP, (menge*PreisLA) AS WertLA,
(cast (Kostl as numeric) - cast (KostlLA as numeric)) DeltaKostl, KostlLA, (Kostl) KostlSAP, Jahr FROM (
SELECT bestellmaster.Firma, (kinfo+'P'+ cast (tblla.Bestpos as varchar)) BestLa,
isnull (Bestellung+'P'+bestellmaster.Bestpos,0) BestSAP,
isnull(cast (Matnr as int),0) MatnrLA, isnull(cast(MatNr_ISL as int),0) MatNrSAP,
(Preis) PreisLA, chrfile, Rechnr,neu, Netwr, Menge, Kzsrg, Bemerkung, year (erdat) Jahr,
Ztext, isnull (PreisEUR,0) PreisEUR , Bestellmaster.WERK, case (idenr)
when '.' then '0'
else (idenr)
end KostlLA FROM tblLA
left join bestellmaster on (kinfo+'P'+ cast (tblla.Bestpos as varchar)) = (Bestellung+'P'+bestellmaster.Bestpos)
and kundennr = Kunnr and year (erdat) = Jahr
WHERE Kzsrg='R' aND neu='J'
and year (erdat) = '2002'
aND Bemerkung Is Null) x
left join stammdaten.dbo.tblkostl on x.Jahr <= year (datbi) and x.Jahr >= year (datab)
and x.KostlLA = stammdaten.dbo.tblkostl.Kostl
and x.firma = stammdaten.dbo.tblkostl.firma
WHERE (PreisLA-PreisEUR) > 0.01
Or (PreisLA-PreisEUR) < -0.01
OR (Kostl-KostlLA) Is Null
OR (Kostl-KostlLA) <> '0'
OR BestSAP Is Null
OR (MatnrLA-MatnrSAP)<> '0'
OR (menge*preisLA)-(menge*Preiseur) > 0.01
Or (menge*preisLA)-(menge*Preiseur) < -0.01
Die Abfrage meldet einen Fehler wegen Subtraktion von varchar.
Kostl und KostlLA wurden auf varchar umgestellt, da sie nicht mehr rein numerische sondern nun alphanumerische werte enthalten. wie kann ich die Funktion der Abfrage erhalten, wenn ich nun alphanumerische Werte benutzen muss?
Comment