Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Einfügen und Transformieren von Daten aus einer SQL-Tabelle

Ein WHILE ist nicht erforderlich Schleife.

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

Außerdem wird die status_time beibehalten in der Tabelle ist ein Fehler (es sei denn, es handelt sich um eine nicht persistente, berechnete Spalte). Sie speichern dieselben Daten effektiv an zwei Stellen in der Datenbank, was zu Inkonsistenzen führen wird. Dasselbe gilt für das Verschieben dieser Daten in eine andere Tabelle mit Zeiten, die nach Statustyp aufgeschlüsselt sind. Erstellen Sie keine neue Tabelle, um die Daten zu speichern, verwenden Sie die Abfrage, um die Daten abzurufen, wenn Sie sie benötigen.