sql >> Databáze >  >> RDS >> Mysql

Jak získat všechny záznamy bez odstranění ve skupině v mysql

Pokud používáte MySQL 8+, můžeme to zvládnout pomocí 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;

Ale mějte na paměti, že obecně je žádoucí ukládat datum a čas do jednoho datetime pole s MySQL. V tomto konkrétním případě to dopadlo dobře, ale nemusí to být vždy pravda.



  1. Vyberte druhou nejnižší minimální hodnotu v Oracle

  2. jak najít přesně data mezi vybranou diagonální oblastí v dotazu mysql

  3. Je bezpečné nechat uživatele zadat pole mysql pro vyhledávání?

  4. Proč je daná syntaxe platná v mysql?