Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用“选择结果”生成表格_Mysql_Sql - Fatal编程技术网

Mysql 使用“选择结果”生成表格

Mysql 使用“选择结果”生成表格,mysql,sql,Mysql,Sql,我有一张这样的桌子: 我要执行以下SELECT语句: SELECT count(*) from table WHERE A=1 and date between 2013-02 and 2013-03 SELECT count(*) from table WHERE A=1 and date between 2013-03 and 2013-04 SELECT count(*) from table WHERE A=1 and date between 2013-04 and 2013-05

我有一张这样的桌子:

我要执行以下SELECT语句:

SELECT count(*) from table WHERE A=1 and date between 2013-02 and 2013-03
SELECT count(*) from table WHERE A=1 and date between 2013-03 and 2013-04
SELECT count(*) from table WHERE A=1 and date between 2013-04 and 2013-05
....
SELECT count(*) from table WHERE B=1 and date between 2013-02 and 2013-03
SELECT count(*) from table WHERE B=1 and date between 2013-03 and 2013-04
SELECT count(*) from table WHERE B=1 and date between 2013-04 and 2013-05
...etc
最快的查询是什么?我可以将结果安排在如下表格中:

date    |A=1  |B=1  |C=1  |...
2013-Feb|count|count|count|
2013-Mar|count|...
如果列
A
E
中的值仅为0或1(或可能
NULL
),则我们可以简化为:

SELECT DATE_FORMAT(date, '%Y-%m'),
       SUM(A) AS Acount,
       SUM(B) AS Bcount,
       SUM(C) AS Ccount,
       SUM(D) AS Dcount,
       SUM(E) AS Ecount
FROM table
GROUP BY DATE_FORMAT(date, '%Y-%m')


您好,
您可以使用分组方式功能

    SELECT 
    to_char(date,'YYYY-MM') as date,
    CASE WHEN A=1 THEN COUNT(A)  END as A ,
    CASE WHEN B=1 THEN COUNT(B)  END as B ,
    CASE WHEN C=1 THEN COUNT(C)  END as C ,
    CASE WHEN D=1 THEN COUNT(D)  END as D ,
    CASE WHEN E=1 THEN COUNT(E)  END as E  
    from table_name group by date order by date

此查询根据年份和月份对列进行分组,并提供结果

从日期提取月份并按月份进行分组。最后计数。这是一个透视表,有关解决方案的示例,请参见
    SELECT 
    to_char(date,'YYYY-MM') as date,
    CASE WHEN A=1 THEN COUNT(A)  END as A ,
    CASE WHEN B=1 THEN COUNT(B)  END as B ,
    CASE WHEN C=1 THEN COUNT(C)  END as C ,
    CASE WHEN D=1 THEN COUNT(D)  END as D ,
    CASE WHEN E=1 THEN COUNT(E)  END as E  
    from table_name group by date order by date