Поле возраста конвертируется из varchar в целое число, но теперь я хочу сгруппировать по возрасту в представлении SQL.
Я унаследовал базу данных, что поле возраста является varchar
, Таким образом, в представлении SQL я преобразую его в целое число как таковое CONVERT(int, IND_DEMO.AGE) AS IND_AGE
,
Однако сейчас я хочу сгруппировать эти возрасты. Я хотел бы добавить столбец, чтобы сказать, в какое ведро они попадают, чтобы я мог построить статистику. Вот весь вид SQL. Может ли кто-нибудь помочь мне? Я очень ценю это. Возрастной диапазон может быть таким простым, как <18, 18-25, >=26
SELECT
Name.ID,
Name.STATUS,
Name.MEMBER_TYPE,
Name.CATEGORY,
CONVERT(int, IND_DEMO.AGE) AS IND_AGE,
IND_DEMO.AGE
FROM Name
INNER JOIN IND_DEMO
ON Name.ID = IND_DEMO.ID
WHERE (Name.STATUS = 'A')
AND (Name.MEMBER_TYPE LIKE 'ind%')
AND (NOT (IND_DEMO.AGE LIKE '%.%'))
AND (IND_DEMO.AGE <> '')
2 ответа
Решение
Вы можете попробовать это с делом
SELECT
Name.ID,
Name.STATUS,
Name.MEMBER_TYPE,
Name.CATEGORY,
CONVERT(int, IND_DEMO.AGE) AS IND_AGE,
CASE WHEN CONVERT(int, IND_DEMO.AGE) < 18 THEN '<18'
WHEN CONVERT(int, IND_DEMO.AGE) >= 18 and CONVERT(int, IND_DEMO.AGE)< 26 THEN '18-25'
ELSE '>=26' END AS AgeRange,
IND_DEMO.AGE
FROM Name
INNER JOIN IND_DEMO
ON Name.ID = IND_DEMO.ID
WHERE (Name.STATUS = 'A')
AND (Name.MEMBER_TYPE LIKE 'ind%')
AND (NOT (IND_DEMO.AGE LIKE '%.%'))
AND (IND_DEMO.AGE <> '')
Попробуй это
SELECT Name.ID, Name.STATUS, Name.MEMBER_TYPE, Name.CATEGORY, CONVERT(int, IND_DEMO.AGE) AS IND_AGE, IND_DEMO.AGE
FROM Name
INNER JOIN IND_DEMO
ON Name.ID = IND_DEMO.ID
WHERE
(Name.STATUS = 'A')
AND (Name.MEMBER_TYPE LIKE 'ind%')
AND (NOT (IND_DEMO.AGE LIKE '%.%')) AND (IND_DEMO.AGE <> '')
Group By Name.ID, Name.STATUS, Name.MEMBER_TYPE, Name.CATEGORY, CONVERT(int, IND_DEMO.AGE), IND_DEMO.AGE
Having CONVERT(int, IND_DEMO.AGE) < 18
AND CONVERT(int, IND_DEMO.AGE) >=26