sql >> Databasteknik >  >> RDS >> Sqlserver

Infoga och transformera data från SQL-tabell

Det finns inget behov av en WHILE loop.

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

Behåll också status_time i tabellen är ett misstag (såvida det inte är en icke-beständig, beräknad kolumn). Du lagrar i praktiken samma data på två ställen i databasen, vilket kommer att leda till inkonsekvenser. Detsamma gäller för att skjuta in dessa data till en annan tabell med tider uppdelade efter statustyp. Skapa inte en ny tabell för att lagra data, använd frågan för att hämta data när du behöver den.



  1. Släpp unik nyckel med flera kolumner utan att tappa främmande nyckel?

  2. Kontrollera om match 3 eller fler matchar i DB-raden

  3. Skriv GeoDataFrame till SQL Database

  4. Hur ställer man in kodningen för tabellernas char-kolumner i django?