Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вмъкване и трансформиране на данни от SQL таблица

Няма нужда от WHILE цикъл.

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

Освен това запазване на status_time в таблицата е грешка (освен ако не е непостоянна, изчисляема колона). Вие ефективно съхранявате едни и същи данни на две места в базата данни, което в крайна сметка ще доведе до несъответствия. Същото важи и за натискането на тези данни в друга таблица с времена, разбити по тип състояние. Не създавайте нова таблица, за да съхранявате данните, използвайте заявката, за да получите данните, когато имате нужда от тях.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да задам променлива от SQL заявка?

  2. Как да получите модела за възстановяване на база данни в SQL Server с помощта на T-SQL

  3. разстояние между две дължина и ширина

  4. Как да зададете понеделник като първи ден от седмицата в SQL Server

  5. Как да вмъкнете няколко записа и да получите стойността на самоличността?