Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Inserimento e trasformazione di dati da tabella SQL

Non c'è bisogno di un WHILE ciclo.

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

Inoltre, mantenendo lo status_time nella tabella è un errore (a meno che non sia una colonna calcolata non persistente). Stai effettivamente archiviando gli stessi dati in due posizioni nel database, il che finirà per causare incoerenze. Lo stesso vale per il push di questi dati in un'altra tabella con tempi suddivisi per tipo di stato. Non creare una nuova tabella per contenere i dati, usa la query per ottenere i dati quando ne hai bisogno.