Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получите целия запис без премахване в групата в mysql

Ако използвате MySQL 8+, можем да се справим с това с помощта на ROW_NUMBER :

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY Date ORDER BY Time) rn
    FROM attendancedata
    WHERE EnrolledID = 23
)

SELECT
    Date,
    MAX(CASE WHEN rn = 1 THEN Time END) AS PO1,
    MAX(CASE WHEN rn = 2 THEN Time END) AS PO2,
    MAX(CASE WHEN rn = 3 THEN Time END) AS PO3,
    MAX(CASE WHEN rn = 4 THEN Time END) AS PO4,
    MAX(CASE WHEN rn = 5 THEN Time END) AS PO5,
    MAX(CASE WHEN rn = 6 THEN Time END) AS PO6,
    MAX(CASE WHEN rn = 7 THEN Time END) AS PO7
FROM cte
GROUP BY
    Date
ORDER BY
    Date;

Но имайте предвид, че като цяло е желателно да съхранявате дата и час в един datetime поле с MySQL. В този конкретен случай се получи добре, но това може да не винаги е вярно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL тип колона TIMESTAMP имплицитно включва NOT NULL DEFAULT CURRENT_TIMESTAMP ПРИ АКТУАЛИЗИРАНЕ CURRENT_TIMESTAMP

  2. Има ли еквивалент за @@error на SQL Server в MySQL

  3. SQL:Ефективност на свързването на вериги

  4. Импортиране на голям sql файл в MySql чрез команден ред

  5. Mysql пускане на потребител с разрешения за множество хостове