sql >> Database >  >> RDS >> Sqlserver

Gegevens uit de SQL-tabel invoegen en transformeren

Er is geen WHILE nodig lus.

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

Houd ook de status_time in de tabel is een fout (tenzij het een niet-persistente, berekende kolom is). U slaat in feite dezelfde gegevens op twee plaatsen in de database op, wat uiteindelijk tot inconsistenties zal leiden. Hetzelfde geldt voor het pushen van deze gegevens naar een andere tabel met tijden uitgesplitst naar statustype. Maak geen nieuwe tabel om de gegevens op te slaan, gebruik de query om de gegevens op te halen wanneer u ze nodig hebt.



  1. VERWIJDER recursieve PostgreSQL

  2. Een 64-bits applicatie verbinden met Acomba

  3. Hoe kan ik sorteren op meerdere kolommen, maar niet op waarde?

  4. Hoe maak ik met PHP een database aan als deze nog niet bestaat?