我希望采用下表并以下面概述的格式表示数据。
所有 A 类日期
作为 Date 1
列,B 类日期
作为 Date 2
列。 Type A
的行数总是比 Type B
多,因此对于任何缺失的行,我需要包含 null。
我不确定这是什么类型的转换,这么多问题可能会产生误导。
查询可以用mysql写 >=5.7
Type A -> Date 1
Type B -> Date 2
------------------
| Table |
-----------------|
| type | date |
| A | 2019-01 |
| A | 2019-02 |
| A | 2019-03 |
| A | 2019-04 |
| B | 2018-10 |
| B | 2018-11 |
------------------
我想将数据转换为以下内容:
------------------------
| Date 1 | Date 2 |
| 2019-01 | 2018-10 |
| 2019-02 | 2018-11 |
| 2019-03 | null |
| 2019-04 | null |
-------------------------
最佳答案
尝试这样的事情,mysql 没有行号或排名函数,这很痛苦,但可以通过这样的事情来实现
SET @row_number_a = 0;
SET @row_number_b = 0;
SELECT * FROM
(SELECT
(@row_number_a:=@row_number_a + 1) AS rn, date
FROM test
WHERE type = 'A'
ORDER BY date DESC) a
LEFT JOIN
(SELECT
(@row_number_b:=@row_number_b + 1) AS rn, date
FROM test
WHERE type = 'B'
ORDER BY date DESC) b
ON a.rn = b.rn
关于Mysql按行数进行子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336922/