mysql – 对一个表的复杂SQL查询
作者:互联网
这里有张桌子:
event |id |timestamp --------------------- event1|001|21-03-15 event2|001|22-03-15 event1|002|23-03-15 event2|002|24-03-15
什么应该是显示结果的请求:
id |event1 |event2 | ---------------------- 001|21-03-15|22-03-15| 002|23-03-15|24-03-15|
我想你首先需要选择一个唯一的id:
SELECT id FROM test GROUP BY id;
然后这样的事情:
SELECT timestamp
FROM ...
WHERE id IN (SELECT id FROM test GROUP BY id) AND event='event1';
事件是事先知道的(‘event1′,’event2’).
如果在一个id下有重复事件,具有不同或相同的时间戳,请在结果中添加列,例如:
id |event1 |event2 |event1 |event2 | ---------------------------------------- 001|21-03-15|22-03-15|23-03-15|23-03-15| 002|23-03-15|24-03-15|NULL |NULL |
解决方法:
您正在寻找一个简单的“枢轴”或“交叉”技巧:
SELECT id
, min(CASE event WHEN 'event1' THEN timestamp END) AS event1
, min(CASE event WHEN 'event2' THEN timestamp END) AS event2
FROM test
GROUP BY id
ORDER BY id;
标签:mysql,sql,crosstab 来源: https://codeday.me/bug/20190702/1356785.html