sql >> Databáze >  >> RDS >> Sqlserver

Vkládání a transformace dat z SQL tabulky

Není potřeba WHILE smyčka.

SELECT
    date,
    id,
    SUM(CASE WHEN status_id = 1 THEN status_time ELSE 0 END) AS lunch,
    SUM(CASE WHEN status_id = 2 THEN status_time ELSE 0 END) AS break,
    SUM(CASE WHEN status_id = 3 THEN status_time ELSE 0 END) AS vacation
FROM
    My_Table
GROUP BY
    date,
    id

Také zachování status_time v tabulce je chyba (pokud se nejedná o netrvalý, vypočítaný sloupec). Efektivně ukládáte stejná data na dvou místech v databázi, což bude mít za následek nekonzistence. Totéž platí pro vložení těchto dat do jiné tabulky s časy rozdělenými podle typu stavu. Nevytvářejte novou tabulku k uložení dat, použijte dotaz k získání dat, když je potřebujete.



  1. Chyba PostgreSQL při pokusu o vytvoření rozšíření

  2. Chyba Oracle při spuštění jiné probíhající operace spuštění/vypnutí této instance

  3. Získejte ID vloženého řádku pomocí C#

  4. Vypočítejte hash nebo kontrolní součet pro tabulku na serveru SQL Server