2017-11-06 9 views
1

Ich habe diese AbfrageFall für Zahlenbereich ohne bestimmte Anzahl - SQL Server

SELECT * , 
CASE WHEN FigureID >= 0 AND <= 10 AND <> 5 
THEN 'Group1' ELSE 'Group2' END AS 'Group' 
FROM 
Figure 

Jetzt suche ich alle Zahlen sind zwischen 1-10 in dem Fall Aussage aber ausschließen 5. Gibt es trotzdem zu tun so dass "5" ausdrücklich ausgeschlossen ist.

Ich habe das versucht, aber es gibt mir immer noch nicht das Ergebnis, das ich suche.

SELECT * , 
CASE WHEN FigureID <= 4 AND FigureID >= 6 
THEN 'Group1' ELSE 'Group2' END AS 'Group' 
FROM 
Figure 

Beispiel führen

FigureID Amount Group 
    1   10 Group1 
    2   10 Group1 
    3   10 Group1 
    4   10 Group1 
    5   10 N/a 
    6   10 Group1 

SQL Geige - http://sqlfiddle.com/#!6/30e2c/11

dank

Antwort

2

Sie bis 5 verwenden, sollte für die Spaltennamen verwenden e ACH Zustand

SELECT * , 
     CASE WHEN FigureID >= 0 AND FigureID <= 10 AND FigureID <> 5 
      THEN 'Group1' 
      ELSE 'Group2' 
     END AS 'Group' 
    FROM Figure 
0

Nur eben nicht gleich statt

SELECT * , 
CASE WHEN FigureID <> 5 
THEN 'Group1' 
when FigureID =5 
then 'n/a' 
ELSE 'Group2' END AS 'Group' 
FROM 
Figure 
0

Eine Methode ist:

(CASE WHEN FigureID >= 1 AND FigureID <= 10 AND FigureId <> 5 
     THEN 'Group1' 
     ELSE 'Group2' 
END) AS grp 

Sie können auch tun:

(CASE WHEN FigureId = 5 THEN 'N/A' 
     WHEN FigureID >= 1 AND FigureID <= 10 THEN 'Group1' 
     ELSE 'Group2' 
END) AS grp 

Ebenfalls wichtig: Verwenden Sie keine einfachen Anführungszeichen für Spaltenaliasnamen verwenden. Verwenden Sie nur einfache Anführungszeichen für String- und Datumskonstanten. Vermeiden Sie auch die Verwendung von SQL-Schlüsselwörtern als Bezeichnernamen (GROUP ist ein SQL-Schlüsselwort).

1
SELECT * , 
    CASE WHEN (FigureID >= 1 AND FigureID <= 10) AND (FigureID <> 5) 
    THEN 'Group1' 
    WHEN FigureID = 5 THEN 'N/A' 
    ELSE 'Group2' 
    END AS [Group] 
    FROM Figure 

Erste CASE nimmt die Bedingung, dass FigureID zwischen 1 und 10 ist, aber nicht gleich 5 ist und der Ausgang ist ‚Gruppe 1‘.

Second CASE behandelt die Situation, wo FigureID einen Wert von 5 und gibt 'N/A'

ELSE Klausel hat, ist, wenn zwei obigen Bedingungen falsch und Ausgänge 'Group2' sind.

Schließlich ist der Name dieser Spalte Group, aber da Group ein Schlüsselwort ist, müssen wir es in eckige Klammern wie [Group] einschließen.

+0

NP3 danke. Bitte fügen Sie dieser Antwort weitere Erläuterungen hinzu, um sie für das ursprüngliche Poster zu verdeutlichen. Siehe https://stackoverflow.com/help/how-to-answer "Denken Sie daran, Sie können jederzeit jederzeit zurückgehen und Ihre Antwort bearbeiten, um sie zu verbessern." – micstr

+1

@micestr: Nun, ich dachte, der Code ist selbsterklärend zu OP, aber Sie haben Recht, ich sollte erläuternde Notizen für andere zu verstehen. Also bearbeite ich meine Antwort! – NP3

+0

Ich stimme dir zu NP3 - dein Code sah gut aus * aber * wenn du nicht ein paar Wörter hinzufügst, kann deine Frage in der Warteschlange "Niedrige Qualitätspost" enden und riskiert deine harte Arbeit! – micstr

Verwandte Themen