sql >> Database >  >> RDS >> Mysql

Hoe het hele record te krijgen zonder te verwijderen in Groep in mysql

Als u MySQL 8+ gebruikt, kunnen we dit afhandelen met 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;

Maar merk op dat het in het algemeen wenselijk is om datum en tijd op te slaan in een enkele datetime veld met MySQL. In dit specifieke geval werkte het goed, maar dit is misschien niet altijd waar.



  1. sql use-instructie met variabele

  2. JSON_ARRAYAGG() - Maak een JSON-array van de rijen van een query in MySQL

  3. Android:hoe een contact van de telefoon importeren?

  4. Testen op beveiligingsproblemen in webapplicaties:best practices?