用于连接值的MYSQL查询(highcharts系列数据)

时间:2017-10-24 11:20:15

标签: mysql highcharts

我试图根据类型(B)和日期(A)查询连接值(C)。如果白天没有B记录,我需要将0值加入连接值。如下例所示

+------------+---------+--------+
| A          | B       | C      |
+------------+---------+--------+
| 2017-10-20 | 001     |      1 |
| 2017-10-20 | 002     |      2 |
| 2017-10-21 | 003     |      3 |
| 2017-10-21 | 001     |      4 |
| 2017-10-21 | 002     |      1 |
| 2017-10-22 | 002     |      2 |
| 2017-10-22 | 003     |      2 |
| 2017-10-23 | 001     |      4 |
| 2017-10-23 | 002     |      6 |
| 2017-10-24 | 003     |      1 |
+------------+---------+--------+


+------------+-----------+
| B          | CONCAT    |
+------------+-----------+
| 001        | 1,4,0,4,0 |
| 002        | 2,1,2,6,0 |
| 003        | 0,3,2,0,1 |
+------------+-----------+

但是我被困了,我需要一个解决方案。谢谢

基本问题是如果特定日期的数据不存在,则按日期顺序

插入0

对于001(B),有2017-10-20(A) - 1(C),2017-10-21(A) - 4(C), 2017-10-22(A) - 0(C),2017-10-23(A) - 4(C), 2017-10-24(A) - 0(C)

SELECT b, 
       Group_concat(c ORDER BY b.a) 
FROM   pom2 a 
       LEFT JOIN (SELECT a 
                  FROM   pom2 
                  GROUP  BY a) b 
              ON a.a = b.a 
GROUP  BY a.b 

在没有零的情况下返回

+-----+------------------------------+
| B   | GROUP_CONCAT(C ORDER BY b.A) |
+-----+------------------------------+
| 001 | 1,4,4                        |
| 002 | 2,1,2,6                      |
| 003 | 3,2,1                        |
+-----+------------------------------+

1 个答案:

答案 0 :(得分:1)

是的,可以做到:)

SELECT b, 
       Group_concat(c ORDER BY b.a) 
FROM   (SELECT a.a, 
               a.b, 
               Coalesce(b.c, 0) AS C 
        FROM   (SELECT b.a, 
                       a.b, 
                       0 AS C 
                FROM   pom2 a 
                       CROSS JOIN (SELECT a 
                                   FROM   pom2 
                                   GROUP  BY a) b) a 
               LEFT JOIN pom2 b 
                      ON a.a = b.a 
                         AND a.b = b.b 
        GROUP  BY a.b, 
                  a.a) a 
       LEFT JOIN (SELECT a 
                  FROM   pom2 
                  GROUP  BY a) b 
              ON a.a = b.a 
GROUP  BY a.b 

结果是:

+-----+------------------------------+
| b   | Group_concat(c ORDER BY b.a) |
+-----+------------------------------+
| 001 | 1,4,0,4,0                    |
| 002 | 2,1,2,6,0                    |
| 003 | 0,3,2,0,1                    |
+-----+------------------------------+