mysql - 如何将来自多行的数据聚合到分布在多列中的单个数据中?

标签 mysql sql-server common-table-expression denormalization row-number

我的数据库中有这个表,我想将来自多行的数据聚合到一个分布在多个列中的数据中:

ID     PID        date              time
1      12         10/04/2014        7:00
2      12         10/04/2014        10:00
3      12         10/04/2014        15:00
4      13         10/04/2014        7:00
5      13         10/04/2014        15:00
6      12         11/04/2014        7:20
7      12         11/04/2014        15:10
8      13         11/04/2014        7:10
9      13         11/04/2014        7:50
10     13         11/04/2014        15:00
11     13         11/04/2014        15:50

PID是员工编号,具体是考勤系统。 我需要提取这种格式并将这种形式插入到另一个表中:

ID      PID      date               time1          time2         time3       time4
1       12       10/04/2014         7:00           10:00         15:00
2       13       10/04/2014         7:00           15:00
3       12       11/04/2014         7:20           15:10
4       13       11/04/2014         7:10           7:50          15:00       15:50   

最佳答案

虽然评论中所述的担忧是有道理的,但我假设您有充分的理由提出您的具体要求。

此解决方案适用于 MSSQL:

SQL Fiddle, MSSQL 2008+

此解决方案适用于 MySQL:

SQL Fiddle, MySQL 5.5.32

关于mysql - 如何将来自多行的数据聚合到分布在多列中的单个数据中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25363563/

相关文章:

php - 要创建一个安全的 PHP/MySQL 网站,最重要的事情是什么?

mysql - 如何使 perl DBI 中的 mysql_read_default_group 工作

PHP 购物车给出 "Notice: Undefined index"错误

sql-server - SQL Server : why is the 15th char of a GUID always 4?

sql-server - SQL Server 使用递归 CTE 获取路径

sql - 在 View 中使用递归 CTE

mysql - 使用sails-mysql测试Sails Js和Mysql

sql-server - Dapper 是否使用编号参数,例如 Massive

sql - 如何优化sql数据库中两个表的100万条条目的排序和连接?

sql-server-2005 - SQL Server 性能 : derived table vs. 公用表表达式 (CTE)