none
SQL-Statement gesucht RRS feed

  • Frage

  • Hallo,
    ich will ein bestimmtes SQL-Statement auf eine Datenbank von einer anderen Software ausführen.
    Die Software hat folgende zwei Tabellen.

    Tabelle 'Artikel' mit folgenden zwei Spalten:
    ArtikelNr     Preiseinheit       Preis
    000055             2             68,00
    000056             4             16,00
    000057             3            183,50

    Tabelle 'Konstanten' mit den Spalten:
    KonPreiseinheit_0      KonPreiseinheit_1   KonPreiseinheit_2    KonPreiseinheit_3     KonPreiseinheit_4
           1                   100                   200                  500                   1000

    Die Werte verweisen auf die Tabelle 'Konstanten', welche nur aus einem Datensatz besteht.
    Preiseinheit mit dem Wert 2 in der Tabelle 'Artikel' bedeutet, dass ich in der Tabelle 'Konstanten'
    in der Spalte KonPreiseinheit_2 den Wert auslesen muss (Ergebnis ist 200).
    Preiseinheit mit Wert 4 in der Spalte KonPreiseinheit_4 den Wert auslesen und
    Preiseinheit mit Wert 3 in der Spalte KonPreiseinheit_3 den Wert auslesen.

    Das ist etwas seltsam, aber ist durch die andere Software so vorgeben.

    Wie kann ich das SELECT-Statement so erstellen, dass ich z.B. statt der Preiseinheit 2 den
    dazugehörigen Wert 200 aus der Tabelle 'Konstanten' erhalte?
    Weiterhin will ich mit dem Wert 200 nur rechnen und soll nicht in meiner DataTable als Spalte enthalten sein.

    SELECT ArtikelNr, Preis / ? As Einzelpreis FROM Artikel

    Für ? müsste der Wert von KonPreiseinheit_x aus der Tabelle 'Konstanten' stehen.

    Alexander

    Sonntag, 9. Dezember 2012 21:25

Antworten

  • Hallo Alexander,

    Na, das ist aber ein gut durchdachtes Konstrukt ;-)

    Kannst Du über ein CASE WHEN Statement abbilden:

    SELECT A.Artikelnr
          ,A.Preis / 
           (CASE A.Preiseinheit
            WHEN 0 THEN KonPreiseinheit_0
            WHEN 1 THEN KonPreiseinheit_1
            WHEN 2 THEN KonPreiseinheit_2
            WHEN 3 THEN KonPreiseinheit_3
            WHEN 4 THEN KonPreiseinheit_4
            ELSE 1.0) AS Einzelpreis
    FROM Artikel AS A
        ,Konstanten AS K


    Olaf Helper

    Blog Xing

    • Als Antwort vorgeschlagen Uwe RickenMVP Montag, 10. Dezember 2012 07:34
    • Als Antwort markiert AlexanderRi Montag, 10. Dezember 2012 08:55
    Montag, 10. Dezember 2012 06:16

Alle Antworten

  • Hallo Alexander,

    Na, das ist aber ein gut durchdachtes Konstrukt ;-)

    Kannst Du über ein CASE WHEN Statement abbilden:

    SELECT A.Artikelnr
          ,A.Preis / 
           (CASE A.Preiseinheit
            WHEN 0 THEN KonPreiseinheit_0
            WHEN 1 THEN KonPreiseinheit_1
            WHEN 2 THEN KonPreiseinheit_2
            WHEN 3 THEN KonPreiseinheit_3
            WHEN 4 THEN KonPreiseinheit_4
            ELSE 1.0) AS Einzelpreis
    FROM Artikel AS A
        ,Konstanten AS K


    Olaf Helper

    Blog Xing

    • Als Antwort vorgeschlagen Uwe RickenMVP Montag, 10. Dezember 2012 07:34
    • Als Antwort markiert AlexanderRi Montag, 10. Dezember 2012 08:55
    Montag, 10. Dezember 2012 06:16
  • Hallo Olaf,
    vielen Dank für die Hilfe. Eine Änderung (END fehlt) ist noch notwendig:

    SELECT A.Artikelnr
          ,A.Preis /
           (CASE A.Preiseinheit
            WHEN 0 THEN KonPreiseinheit_0
            WHEN 1 THEN KonPreiseinheit_1
            WHEN 2 THEN KonPreiseinheit_2
            WHEN 3 THEN KonPreiseinheit_3
            WHEN 4 THEN KonPreiseinheit_4
            ELSE 1.0 END) AS Einzelpreis
    FROM Artikel AS A
        ,Konstanten AS K


    Alexander

    Montag, 10. Dezember 2012 08:55