Announcement

Collapse
No announcement yet.

Case Anweisung + Addition

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Case Anweisung + Addition

    Hallo Zusammen,

    ich habe mich etwas verzettelt. Ich möchte mehre Werte addieren plus einen Wert der nur bei einem bestimmten Kriterium zutrifft.
    Mein falscher Lösungsansatz wäre folgender

    [highlight=sql]

    (dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net * dbo.z_bsls_zuschlag.Bulkkg + dbo.z_bsls_zuschlag.AbfüllungSTK * dbo.DINVSALES.qty_stock) +
    (dbo.z_bsls_zuschlag.Lohnkg * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net) +
    (CASE WHEN art_group = 'fpha' THEN (dbo.z_bsls_zuschlag.Lohnkgpharma * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net)) AS LOHN1,

    [/highlight]

    Die Case-Anweisung funktioniert bei mir nicht, und ich vermute das ich hier völlig daneben liege.
    Das Case allein funktioniert, nur halt nicht in Verbindung der anderen Werte.

    Vielen lieben Dank

    VG

    Conny

  • #2
    Hallo

    ich habe selbst die Lösung gefunden. Naja Anfänger halt.

    [highlight=sql]
    CASE WHEN art_group = 'fpha' THEN (dbo.z_bsls_zuschlag.Lohnkgpharma * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net)
    + (dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net * dbo.z_bsls_zuschlag.Bulkkg + dbo.z_bsls_zuschlag.AbfüllungSTK * dbo.DINVSALES.qty_stock)
    + (dbo.z_bsls_zuschlag.Lohnkg * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net)
    ELSE (dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net * dbo.z_bsls_zuschlag.Bulkkg + dbo.z_bsls_zuschlag.AbfüllungSTK * dbo.DINVSALES.qty_stock)
    + (dbo.z_bsls_zuschlag.Lohnkg * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net) END AS LOHN1
    [/highlight]

    Falls jemand einen Einwand hat, wie man es besser macht, dann würde ich mich über einen Tipp freuen.

    VG

    Conny

    Comment


    • #3
      Hallo Conny,

      die zweite Methode enthält unnötigerweise doppelte Anweisungen.
      Beim erste Versucht bist du schon fast die optimale Lösung gefunden, lediglich ein "ELSE 0 END" hat gefehlt.

      Ist zwar nicht nötig, aber zur besseren Übersicht und Missverständnisse zu vermeiden, sollten in der zweiten Zeile beim "+" Klammern gesetzt werden.

      [highlight=sql]

      ( dbo.z_bsls_zuschlag.Lohnkg * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net)
      + ((dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net * dbo.z_bsls_zuschlag.Bulkkg) + (dbo.z_bsls_zuschlag.AbfüllungSTK * dbo.DINVSALES.qty_stock))
      + (CASE WHEN art_group = 'fpha'
      THEN (dbo.z_bsls_zuschlag.Lohnkgpharma * dbo.DINVSALES.qty_stock * dbo.BARTICLES.vol_net)
      ELSE 0
      END
      ) AS LOHN1,
      [/highlight]
      Und Falk Prüfer sprach: Formatierung von SQL in Beiträgen

      Comment

      Working...
      X