Announcement

Collapse
No announcement yet.

CASE WHEN THEN - IF? [SQL Server]

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

  • CASE WHEN THEN - IF? [SQL Server]

    Hallo,
    kann man eine CASE WHEN THEN Funktion bei dem THEN Schritt noch weiter verschachteln?

    Mein Beispiel:

    SELECT

    "Region" = CASE WHEN [Territory Code] = '' THEN 'E' ELSE [Territory Code] END,

    [Post Code] AS PLZ,

    FROM [dbo].[CRONUS AG$Customer]


    Gibt es eine Möglichkeit nach Then weiter zu unterscheiden?
    etw mit IF: [Post Code] <2000 = 'E' <3500 ='N' <4500 ='Mid' ...?

    Viele Grüße
    Jörg

  • #2
    Vorschlag: Probier es einfach aus.

    Meine Vermutung: Es müsste gehen. Deine Andeutung mit IF kann so nicht klappen. Aber CASE ist für die Unterscheidung mehrerer Fälle gedacht; also sollte es so funktionieren:
    Code:
      (CASE
         WHEN [Post_Code] < '2000' THEN 'E'
         WHEN [Post_Code] < '3500' THEN 'N'
         WHEN [Post_Code] < '4500' THEN 'Mid'
         ELSE 'X'
      END) AS Region
    Bitte beachte: Code ist als solcher zu markieren! SQL-Befehle sind sinnvoll zu gliedern, beispielsweise einzurücken. Auch Klammern können nützlich sein. Jürgen

    Comment


    • #3
      Hallo Jürgen,

      ausprobiert habe ich es schon. Allerdings habe ich versucht die Verschachtelung bei THEN einzubauen.
      Nun habe ich Deinen Code mit der AND Anweisung kombiniert und es funktioniert.

      Code:
      SELECT
      "Region" = (CASE
           WHEN [Territory Code] = '' AND [Post Code] < '18000' THEN 'E'
           WHEN [Territory Code] = '' AND [Post Code] < '31000' THEN 'N'
           WHEN [Territory Code] = '' AND [Post Code] < '49000' THEN 'Mid'
           WHEN [Territory Code] = '' AND [Post Code] < '60000' THEN 'W'
           WHEN [Territory Code] = '' AND [Post Code] < '99999' THEN 'S'
           ELSE [Territory Code]
        END), 
      [Post Code] AS PLZ,
      FROM [dbo].[CRONUS AG$Customer]
      Du hast recht, ich sollte die SQL-Befehle besser gliedern. Das werde ich ab jetzt besser beachten.
      Vielen Dank für Deine Hilfe!
      Sebastian

      Comment

      Working...
      X