【问题标题】:Age field converted from varchar to integer, but now I want to group on age in SQL View年龄字段从 varchar 转换为整数,但现在我想在 SQL 视图中按年龄分组
【发布时间】:2017-02-05 11:44:23
【问题描述】:

我继承了年龄字段为varchar 的数据库。因此,在 SQL 视图中,我将其转换为整数,例如 CONVERT(int, IND_DEMO.AGE) AS IND_AGE

但是我现在想对这些年龄进行分组。我想添加一列来说明他们属于哪个桶,以便我可以绘制统计数据。这是整个 SQL 视图。有人可以帮助我吗?我非常感激。年龄范围可以简单到 =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 <> '')

【问题讨论】:

  • 你是什么意思“分组”年龄?是否要添加值为 '=26' 的列 AgeBucket?还是您想按桶聚合(例如,获取 COUNTSUMAVG 的其他度量?
  • 是的,我忘了说,谢谢。我想添加一列来说明他们属于哪个桶,以便我可以绘制统计数据。

标签: sql sql-server sql-server-2012 sql-view


【解决方案1】:

你可以试试这样的案例

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 <> '')

【讨论】:

    【解决方案2】:

    试试这个

    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
    

    【讨论】:

    • 我尝试运行此查询,但在“AS”部分的分组中的第 9 行收到错误。感谢您尝试
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2012-02-04
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多