gpt4 book ai didi

php - 合并具有唯一属性的两行

转载 作者:IT老高 更新时间:2023-10-29 00:21:50 26 4
gpt4 key购买 nike

这是我的表(time_entries)的示例输出

user_name| entry_type   | entry_datetime
User1 | Time In | 28-JUL-13 16:40:40
User1 | Time Out | 28-JUL-13 16:40:41
User2 | Time In | 28-JUL-13 16:41:13
User2 | Time Out | 28-JUL-13 16:41:15
User1 | Time In | 27-JUL-13 16:42:30
User1 | Time Out | 27-JUL-13 16:42:34
User2 | Time In | 27-JUL-13 16:43:32
User2 | Time Out | 27-JUL-13 16:43:35

现在我使用了这个查询

SELECT te.user_name, te.entry_name, MAX(te.entry_datetime) AS date
FROM time_entries AS te
GROUP BY te.entry_type, te.user_name

结果是这样的

user_name| entry_type   | entry_datetime
User1 | Time In | 28-JUL-13 16:40:40
User1 | Time Out | 28-JUL-13 16:40:41
User2 | Time In | 28-JUL-13 16:41:13
User2 | Time Out | 28-JUL-13 16:41:15

问题:有没有办法将同名的用户名合并到一行中?并有类似这样的输出。

user_name|  Date     | Timein   | Timeout
User1 | 28-JUL-13 | 16:40:40 | 16:40:41
User2 | 28-JUL-13 | 16:41:13 | 16:41:15

我有点不知道该怎么做。

最佳答案

我会以这种方式处理它:

  1. 创建一个查询,返回每个用户和日期的“时间”时间。
  2. 创建类似 #1 的查询,返回每个用户和日期的“超时”时间。
  3. 使用 LEFT JOIN 将结果合并在一起。

最终结果:

SELECT te.user_name, LEFT(te.entry_datetime, 10) AS entry_date, cin.entry_datetime AS timein, cout.entry_datetime AS timeout
FROM time_entries te
LEFT JOIN (SELECT user_name, LEFT(entry_datetime, 10) AS entry_date, MIN(entry_datetime) AS entry_datetime
FROM time_entries
WHERE entry_type = 'Time In'
GROUP BY user_name, entry_date
) cin ON cin.user_name = te.user_name AND cin.entry_date = LEFT(te.entry_datetime, 9)
LEFT JOIN (SELECT user_name, LEFT(entry_datetime, 10) AS entry_date, MAX(entry_datetime) AS entry_datetime
FROM time_entries
WHERE entry_type = 'Time Out'
GROUP BY user_name, entry_date
) cout ON cout.user_name = te.user_name AND cout.entry_date = LEFT(te.entry_datetime, 10)
GROUP BY te.user_name, entry_date;

Demo

顺便说一句,我在这里使用 LEFT() 因为您的列不包含 MySQL 理解的实际日期格式。

关于php - 合并具有唯一属性的两行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17939334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com