Mysql 在SQL中基于日期组织数据
我的数据集如下所示:Mysql 在SQL中基于日期组织数据,mysql,sql,date,dataset,pivot,Mysql,Sql,Date,Dataset,Pivot,我的数据集如下所示: Category Date -------- ---- Backlog 7/18/18 Backlog 7/18/18 Testing 7/18/18 Done 7/18/18 Backlog 7/19/18 Develop 7/19/18 Backlog 7/20/18 Done 7/20/18 Done 7/20/18 Date1 B
Category Date
-------- ----
Backlog 7/18/18
Backlog 7/18/18
Testing 7/18/18
Done 7/18/18
Backlog 7/19/18
Develop 7/19/18
Backlog 7/20/18
Done 7/20/18
Done 7/20/18
Date1 Backlog DONE Testing
2018-07-18 2 1 1
2018-07-19 2 NULL NULL
2018-07-20 NULL 2 NULL
我想通过计数/组织将其转化为:
Backlog Testing Develop Done Date
------- ------- ------- ---- ----
2 1 0 1 7/18/18
2 0 1 0 7/19/18
1 0 0 2 7/20/18
然而,原始数据集每天都在用新的日期更新。第二天,一些新行将添加到表中,带有日期为7/21/18的Backlog/develope/Testing/Done标记。如何在sql中创建此转换,同时还要考虑数据集每天都在更新的事实?您需要条件聚合:
select sum(Category = 'Backlog') as Backlog,
sum(Category = 'Testing') as Testing,
sum(Category = 'Develop') as Develop,
sum(Category = 'Done') as Done,
date
from table t
group by date;
您需要条件聚合:
select sum(Category = 'Backlog') as Backlog,
sum(Category = 'Testing') as Testing,
sum(Category = 'Develop') as Develop,
sum(Category = 'Done') as Done,
date
from table t
group by date;
输出将如下所示:
Category Date
-------- ----
Backlog 7/18/18
Backlog 7/18/18
Testing 7/18/18
Done 7/18/18
Backlog 7/19/18
Develop 7/19/18
Backlog 7/20/18
Done 7/20/18
Done 7/20/18
Date1 Backlog DONE Testing
2018-07-18 2 1 1
2018-07-19 2 NULL NULL
2018-07-20 NULL 2 NULL
输出将如下所示:
Category Date
-------- ----
Backlog 7/18/18
Backlog 7/18/18
Testing 7/18/18
Done 7/18/18
Backlog 7/19/18
Develop 7/19/18
Backlog 7/20/18
Done 7/20/18
Done 7/20/18
Date1 Backlog DONE Testing
2018-07-18 2 1 1
2018-07-19 2 NULL NULL
2018-07-20 NULL 2 NULL
考虑在呈现层/应用层代码中处理数据显示的问题,假设您有这样的(例如,一个简单的PHP循环作用于一个有序数组)。考虑在呈现层/应用层代码中考虑数据显示的问题,假设您有这个问题(例如,一个简单的PHP循环作用于有序数组)。