Поле возраста конвертируется из 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
Другие вопросы по тегам