sql >> Database teknologi >  >> RDS >> Mysql

Sådan får du hele posten uden at fjerne i Group i mysql

Hvis du bruger MySQL 8+, kan vi håndtere dette ved hjælp af 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;

Men bemærk, at det generelt er ønskeligt at gemme dato og klokkeslæt i en enkelt datetime felt med MySQL. I dette særlige tilfælde fungerede det godt, men det er måske ikke altid sandt.



  1. Hvordan sammenkædes strenge af et strengfelt i en PostgreSQL 'gruppe efter' forespørgsel?

  2. 7 ting at vide om rum på Oracle Cloud Infrastructure

  3. Sådan rettes "Partitionsskemaet '...' har ikke nogen næste brugt filgruppe" i SQL Server

  4. Hvordan kan jeg flette to strenge af kommaseparerede tal i MySQL?