【问题标题】:Access SQL Count field where equals value访问等于值的 SQL 计数字段
【发布时间】:2012-12-28 18:34:01
【问题描述】:

我正在为客户制作一张表格,他们希望只计算特定的列值

我有一张这样的表。(注意:不是实际的表)

company_name | type  | ................
com A        | type1 | ................
com A        | type2 | ................
com B        | type1 | ................
com A        | type2 | ................
com A        | type1 | ................
com C        | type1 | ................
com C        | type2 | ................
com A        | type1 | ................

类型列以此类推,尽管其中有一些他们根本不想计算的列

所需的表格如下所示

company_name | Type1 | Type2 | ..........
com A        |   3   |   2   | ..........
com B        |   1   |   0   | ..........
com C        |   1   |   1   | ..........

到目前为止我得到的是:

company_name | Type  | count | ..........
com A        | type1 |   3   | ..........
com A        | type2 |   2   | ..........
com B        | type1 |   1   | ..........
com C        | type1 |   1   | ..........
com C        | type2 |   1   | ..........

请帮我解决这个问题。

【问题讨论】:

    标签: mysql sql ms-access-2007


    【解决方案1】:

    试试这个:

    SELECT
      company_name,
      SUM(IIF(Type = 'type1', 1, 0)) AS Type1,
      SUM(IIF(Type = 'type2', 1, 0)) AS Type2,
      SUM(IIF(Type = 'type3', 1, 0)) AS Type3
    FROM table
    GROUP BY company_name;
    

    更新

    在 MySQL 中,您可以使用 IF 语句代替 Access 的 IIF,也可以不使用 IFCASE,因为 MySQL 隐式转换:

    SELECT Promoter, 
      Sum(NoticeType = 'VARIATION')       AS 'Variation', 
      Sum(NoticeType = 'TWO HOURS AFTER') AS 'Two Hours After', 
      Sum(NoticeType = 'THREE MONTHS')    AS 'Three Months', 
      Sum(NoticeType = 'THREE DAY')       AS 'Three Day', 
      Sum(NoticeType = 'TEN DAY')         AS 'Ten Day' 
    FROM notices 
    GROUP BY Promoter;
    

    【讨论】:

    • Mahmoud Gamal 我无法感谢你的工作就像一个魅力也感谢你重写它第一个是错误的。大声笑
    • SELECT Promoter, Sum(IIf(Notice Type='VARIATION',1,0)) AS Variation, Sum(IIf(Notice Type='两小时后',1 ,0)) AS Two Hours After, Sum(IIf(Notice Type='三个月',1,0)) AS Three Months, Sum(IIf(Notice Type='三天',1,0)) AS Three Day, Sum(IIf(Notice Type='TEN DAY',1,0)) AS Ten Day FROM notices GROUP BY Promoter;这在 MySQL 中会是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多