Azure-SQL per SELECT einen Wertebereich ermitteln
Manchmal möchte man per SELECT ermitteln in welchem Wertebereich ein Ergebnis liegt.
Angenommen es gibt fogende Bereiche:
- Bereich A Werte zwischen 0 und 25,
- Bereich B Werte zwischen 25 und 50,
- Bereich C Werte zwischen 50 und 100,
- Bereich D Werte zwischen 100 und 1000.
Dazu erstelle ich folgende Tabelle und fülle per INSERT die Bereiche:
CREATE TABLE bereiche( untergrenze int NOT NULL, name NCHAR (1) NOT NULL, id int IDENTITY(1,1) NOT NULL, PRIMARY KEY CLUSTERED (id ASC) ) INSERT INTO bereiche (untergrenze,name) VALUES (0,'A'); INSERT INTO bereiche (untergrenze,name) VALUES (25,'B'); INSERT INTO bereiche (untergrenze,name) VALUES (50,'C'); INSERT INTO bereiche (untergrenze,name) VALUES (100,'D'); INSERT INTO bereiche (untergrenze,name) VALUES (1000,'X');
Ich erhalte folgende Datensätze:
SELECT untergrenze ,name ,id FROM bereiche
Nun die Abfrage auf den Bereich des Wertes @Zahl:
DECLARE @Zahl int = 30 SELECT @Zahl AS Zahl,buntergrenze.name AS Bereich FROM bereiche buntergrenze INNER JOIN bereiche bobergrenze ON buntergrenze.id = bobergrenze.id-1 WHERE @Zahl > buntergrenze.untergrenze AND @Zahl < bobergrenze.untergrenze
Achtung: im Bespiel wird nur mit > und < verglichen. Für die Bereichsgrenzen muss hier natürlich noch ein = ergänzt werden.