我正在尝试在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中有一种简单的方法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以创建新表并在按日期分组时再次插入数据:
INSERT INTO mynewtable (date,RS1,RS2,RS3)
SELECT Date,MAX(RS1),MAX(RS2),MAX(RS3)
FROM myoldtable GROUP BY Date