mysql - 如何根据数据中的条件填充mysql中的列?

标签 mysql select group-by row

我的 mysql 表中有以下格式的数据

id   order_id    state     time_stamp
1       1       created    1:15 6/2/2015
2       2       created    1:17 6/2/2015
3       1         ack      1:18 6/2/2015
4       1       shipped    1:20 6/2/2015
5       1      delivered   1:25 6/2/2015
6       2         ack      1:25 6/2/2015 
7       2       shipped    1:26 6/2/2015
8       2      delivered   1:29 6/2/2015

我想查询此数据库以获得以下格式的结果 -

order_id     created_ts       ack_ts         shipped_ts      delivered_ts
 1         1:15 6/2/2015    1:18 6/2/2015   1:20 6/2/2015   1:25 6/2/2015
 2         1:17 6/2/2015    1:25 6/2/2015   1:26 6/2/2015   1:29 6/2/2015

这可以写为选择 SQL 查询吗?请帮助提供示例查询。 提前致谢。

最佳答案

也许是这样的:

SELECT
    order_id,
    MAX(CASE WHEN state='created' THEN time_stamp ELSE NULL END) AS created_ts,
    MAX(CASE WHEN state='ack' THEN time_stamp ELSE NULL END) AS ack_ts,
    MAX(CASE WHEN state='shipped' THEN time_stamp ELSE NULL END) AS shipped_ts,
    MAX(CASE WHEN state='delivered' THEN time_stamp ELSE NULL END) AS delivered_ts
FROM
    Table1
GROUP BY
    order_id

关于mysql - 如何根据数据中的条件填充mysql中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590571/

相关文章:

java - 从 Java 代码将数据保存在 blob 中

php - mysql_fetch_array() 期望参数 1 为资源、给定的 bool 值和一个

mysql - 如何计算百分比?

r - 在 R 中按组组合行和列上的字符变量

java - PlayFramework 和在 MySQL 数据库中搜索波斯语单词

mysql - 如何使用联合表从多个记录中选择不同的记录

sql - MySQL:分组依据和 IF 语句

python - 使用 Pandas 选择每个 groupby 组的列的最大 N

MYSQL - 不相等连接无法正常工作

jQuery Mobile 选择焦点上的输入文本