繁体   English   中英

如何摆脱数据透视表中的空值?

[英]How to get rid of null values in pivoted table?

我正在尝试在MySQL中透视表,以便可以将行值转换为列标题,以便报表中的表更易于阅读。 这是到目前为止的结果的一个示例(数据有些混乱,但概念仍然相同):

+------------+------+------+---------+
| Date       | RS1  | RS2  |     RS3 |
+------------+------+------+---------+
| 2007-02-26 |   12 | NULL |    NULL |
| 2007-04-12 |    8 | NULL |    NULL |
| 2007-07-31 |    9 | NULL |    NULL |
| 2008-02-07 |   12 | NULL |    NULL |
| 2008-11-06 |   20 | NULL |    NULL |
| 2010-03-04 |    8 | NULL |    NULL |
| 2010-12-16 |    7 | NULL |    NULL |
| 2011-01-24 |   20 | NULL |    NULL |
| 2011-03-22 |    7 | NULL |    NULL |
| 2012-11-12 |   19 | NULL |    NULL |
| 2007-02-26 | NULL |   18 |    NULL |
| 2007-04-12 | NULL |    2 |    NULL |
| 2007-07-31 | NULL |    4 |    NULL |
| 2008-02-07 | NULL |   10 |    NULL |
| 2008-11-06 | NULL |    8 |    NULL |
| 2010-03-04 | NULL |    6 |    NULL |
| 2010-12-16 | NULL |    6 |    NULL |
| 2011-01-24 | NULL |    5 |    NULL |
| 2011-03-22 | NULL |   11 |    NULL |
| 2012-11-12 | NULL |   13 |    NULL |
| 2007-02-26 | NULL | NULL |      15 |
| 2007-04-12 | NULL | NULL |       6 |
| 2007-07-31 | NULL | NULL |       5 |
| 2008-02-07 | NULL | NULL |       8 |
| 2008-11-06 | NULL | NULL |      11 |
| 2010-03-04 | NULL | NULL |       1 |
| 2010-12-16 | NULL | NULL |      19 |
| 2011-01-24 | NULL | NULL |      14 |
| 2011-03-22 | NULL | NULL |      15 |
| 2012-11-12 | NULL | NULL |      10 |
+------------+------+------+---------+
30 rows in set (0.00 sec)

剩下要做的唯一事情就是摆脱NULL值,以便每个日期的所有列都彼此对齐。 换句话说,删除列1的最后20行,列2的前10和最后10行以及列3的前20行,以便所有列及其值对齐。

在MySQL中有一种简单的方法吗?

尝试这个:

SELECT Date,
       MAX(RS1),
       MAX(RS2),
       MAX(RS3)
FROM Table1
GROUP BY Date

SQLFiddle演示

您可以创建一个新表并在按日期分组时再次插入数据:

    INSERT INTO mynewtable (date,RS1,RS2,RS3)
      SELECT Date,MAX(RS1),MAX(RS2),MAX(RS3)
      FROM myoldtable GROUP BY Date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM