Abfrage-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage-Problem

    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?

  • #2
    möchstest du alphanummerische Werte von einander anziehen ... ?

    Kommentar


    • #3
      Natürlich nicht. Das macht ja keinen Sinn. Es waren mal numerische Werte, die so auf Gleichheit geprüft wurden. Jetzt sind es alphanumerische Werte und ich suche eine Möglichkeit, diese nach der gleichen Logik wie vorher, aber eben ohne Rechenoperationen zu prüfen

      Kommentar


      • #4
        KOSTL-KOSTLA ist dann NULL, wenn mindestens einer der beiden Werte NULL ist => 2 mit OR verknüpfte bedingungen

        KOSTL-KOSTLA ist dann ungleich 0, wenn die beiden Werte verschieden sind => KOSTL != KOSTLA

        So?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          KOSTL-KOSTLA ist dann NULL, wenn mindestens einer der beiden Werte NULL ist
          Meinst du jetzt wirklich NULL, oder 0? :-)
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Na ich hoffe er meint NULL :-)
            das hakt dann bloss oben in der Differenzermittlung von Kostl zu KostlLA. wie kann ich diese Berechnung so ersetzen, dass die Deltakostl auf 9999999999 gesetzt wird, wenn Kostl != KostlLA ?

            Kommentar

            Lädt...
            X