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 - Fatal编程技术网

mySQL-转置表并仅打印最大值

mySQL-转置表并仅打印最大值,mysql,Mysql,我有下表,我可以得到每个日期的最大值,但我想在同一时间转置它 我得到的表格是: +--------+------+-------------+----------------+------------+-------+ | LEG_ID | TAIL | REPORT_NAME | REPORT_ELEMENT | DATE | VALUE | +--------+------+-------------+----------------+------------+-------+

我有下表,我可以得到每个日期的最大值,但我想在同一时间转置它

我得到的表格是:

+--------+------+-------------+----------------+------------+-------+
| LEG_ID | TAIL | REPORT_NAME | REPORT_ELEMENT | DATE       | VALUE |
+--------+------+-------------+----------------+------------+-------+
|     10 | ABC  | Report1     | A              | 2018-12-17 |  1050 |
|      9 | XYZ  | Report1     | B              | 2018-12-17 |  1020 |
|      9 | XYZ  | Report1     | A              | 2018-12-16 |  1021 |
|      8 | ABC  | Report1     | B              | 2018-12-16 |  1022 |
|      7 | XYZ  | Report1     | A              | 2018-12-15 |  1010 |
|      6 | ABC  | Report1     | B              | 2018-12-15 |  1010 |
|      5 | ABC  | Report1     | A              | 2018-12-13 |  1001 |
|      4 | XYZ  | Report1     | B              | 2018-12-12 |  1001 |
+--------+------+-------------+----------------+------------+-------+
获取最大值的sql代码是:

SELECT *
FROM READING WHERE (DATE,TAIL, REPORT_ELEMENT, VALUE) IN
( SELECT MAX(DATE),TAIL, REPORT_ELEMENT, VALUE
FROM READING
GROUP BY TAIL, REPORT_ELEMENT
);
我想要的结果如下:

+---------+----------+----------+-----------+-----------+
|TAIL     | REPORT A | REPORT B | DATE A    | DATE B    |
+---------+----------+----------+-----------+-----------+
|ABC      | 1050     |    1022  |2018-12-17 |2018-12-16 |
|XYZ      | 1021     |    1020  |2018-12-16 |2018-12-17 |
+---------+----------+----------+-----------+-----------+
复制我的表的代码:

CREATE TABLE READING
(

LEG_ID int (10),
TAIL char(255),
REPORT_NAME char (255),
REPORT_ELEMENT char(255),
DATE date,
VALUE int (10));

insert into READING values 
(10, "ABC", "Report1", "A", '2018-12-17', 1050),
(9,  "XYZ", "Report1", "B", '2018-12-17', 1020),
(9,  "XYZ", "Report1", "A", '2018-12-16', 1021),
(8,  "ABC", "Report1", "B", '2018-12-16', 1022),
(7,  "XYZ", "Report1", "A", '2018-12-15', 1010),
(6,  "ABC", "Report1", "B", '2018-12-15', 1010),
(5,  "ABC", "Report1", "A", '2018-12-13', 1001),
(4,  "XYZ", "Report1", "B", '2018-12-12', 1001);
像这样转动它:

SELECT 
   TAIL, 
   MAX(CASE WHEN REPORT_ELEMENT = 'A' THEN DATE END) AS DATEA,
   MAX(CASE WHEN REPORT_ELEMENT = 'B' THEN DATE END) AS DATEB,
   MAX(CASE WHEN REPORT_ELEMENT = 'A' THEN VALUE END) AS VALUEA,
   MAX(CASE WHEN REPORT_ELEMENT = 'B' THEN VALUE END) AS VALUEB
FROM READING
GROUP BY TAIL

REPORT\u元素
将只有两个值
A
B
?如果可以有更多的话,它是一个数据透视表问题。如果合适的话,考虑应用程序代码中的数据显示问题。