Вы можете использовать выражение CASE
:
SELECT Id, Name, Age,
CASE WHEN Age BETWEEN 5 AND 30 THEN '5-30'
WHEN Age BETWEEN 50 AND 100 THEN '50-100'
ELSE 'OTHER' END AS INTERVAL
FROM Citizens
WHERE (Age BETWEEN 5 AND 30) OR (Age BETWEEN 50 AND 100);
Примечание. Я не уверен, хотите ли вы отображать только определенные возрастные диапазоны.Если это так, то оставьте текущее предложение WHERE
без изменений.Если вместо этого вы хотите включить все данные, удалите предложение WHERE
.В этом случае несоответствующие диапазоны будут сообщаться как OTHER
.
. Другой подход, который может масштабироваться лучше, будет иметь таблицу интервалов:
start | end | interval
5 | 30 | 5-30
50 | 100 | 50-100
Затем присоединитесь к этой таблице, чтобывведите метку интервала:
SELECT c.Id, c.Name, c.Age, i.interval
FROM Citizens c
INNER JOIN interval i
ON c.Age BETWEEN i.start AND i.end
WHERE (c.Age BETWEEN 5 AND 30) OR (c.Age BETWEEN 50 AND 100);
Одним из основных возможных преимуществ этого второго подхода является то, что можно было бы ввести стратегию индекса.