1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Werte aus CASE miteinander multiplizieren

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von wuumbs, 5 Januar 2018.

  1. wuumbs

    wuumbs Neuer Benutzer

    Hallo zusammen,

    zunächst wünsche ich Euch allen ein frohes und gesegnetes neues Jahr 2018.

    Bei folgendem Szenario könnte ich Eure Hilfe gebrauchen und freue mich sehr über Tipps. Es liegt folgendes vor:

    - Fertigungsdaten von maschinell gefertigten Bauteilen

    Anhand verschiedener CASE Befehle vergebe ich Kennziffern für die vorhandenen Fertigungsdaten. Zwei dieser CASE Befehle sehen wie folgt aus:

    Code:
    /* Kennziffer1 */
    
                               CASE
                              
                               WHEN Fertigungsdaten.Zeitraum = 'Zeitraum1' THEN '1'
    
                               WHEN Fertigungsdaten.Zeitraum = 'Zeitraum2' THEN '3'
    
                               WHEN Fertigungsdaten.Zeitraum = 'Zeitraum3' THEN '2'
    
                               ELSE '4'
    
                               END AS Kennziffer1,
    
    
    /* Kennziffer2 */
    
                               CASE
    
                               WHEN HR_Fertigungsdaten.rad = '0.05' THEN '0.9'
    
                               WHEN HR_Fertigungsparameter.rad = '0.15' THEN '0.7'
    
                               WHEN HR_Fertigungsparameter.rad = '0.05' THEN '2'
    
                               ELSE '1'
    
                               END AS Kennziffer2
    Insgesamt vergebe ich 10 verschiedene Kennziffern.
    Am Ende dieser CASE Befehle würde ich die einzelnen Kennziffern gerne miteinander multiplizieren und den Wert in einer neuen Spalte 'Multiplikation_Kennziffern' ausgeben lassen.

    Kennziffer1 * Kennziffer2 * ... * Kennziffer 10

    Leider kann ich auf die einzelnen der CASE Befehle nicht zugreifen.

    Mir erscheint das Problem eigentlich gar nicht so kompliziert, doch trotzdem schaffe ich es mit meinem rudimentären Wissen nicht diese Multiplikation und Ausgabe in einer separaten Spalte durchzuführen.

    Über Eure Hilfe freue ich mich sehr und verbleibe mit besten Grüßen,
    wuumbs
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Was hast Du denn versucht?

    Egal. Das Problem ist, daß die Spalten erst nach Ausführung zur Verfügung stehen, nicht aber schon zu einer Zeit, wo Du auf diese im Select zugreifen kannst. Entweder Du wiederholst für Deine Multiplikation alle Case-Anweisungen, oder Du nringst das in eine Subquery, z.B. via einer CTE:

    Code:
    test=# select case when 1=1 then 10 else 3 end as a, case when 1=5 then 4 else 8 end as b;
     a  | b
    ----+---
     10 | 8
    (1 row)
    
    test=*# select case when 1=1 then 10 else 3 end as a, case when 1=5 then 4 else 8 end as b, a*b;
    FEHLER:  Spalte »a« existiert nicht
    LINE 1: ... else 3 end as a, case when 1=5 then 4 else 8 end as b, a*b;
    test=*# with x as (select case when 1=1 then 10 else 3 end as a, case when 1=5 then 4 else 8 end as b) select a*b from x;
     ?column?
    ----------
      80
    (1 row)
    
    test=*#
    
     

Diese Seite empfehlen