Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chèn và chuyển đổi dữ liệu từ bảng SQL

Không cần WHILE vòng lặp.

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

Ngoài ra, giữ status_time trong bảng là một sai lầm (trừ khi đó là một cột không liên tục, được tính toán). Bạn đang lưu trữ hiệu quả cùng một dữ liệu ở hai nơi trong cơ sở dữ liệu, điều này sẽ dẫn đến sự mâu thuẫn. Điều tương tự cũng xảy ra với việc đẩy dữ liệu này sang một bảng khác với thời gian được chia nhỏ theo loại trạng thái. Không tạo một bảng mới để chứa dữ liệu, hãy sử dụng truy vấn để lấy dữ liệu khi bạn cần.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiểu câu lệnh DROP TABLE trong SQL Server

  2. Làm cách nào để khắc phục lỗi 'Nhà cung cấp đường ống được đặt tên, lỗi 40 - Không thể mở kết nối với' Máy chủ SQL '?

  3. Mẹo để giảm độ phức tạp của máy chủ SQL của bạn

  4. Câu lệnh hợp nhất SQL

  5. Không thể tìm thấy đối tượng vì nó không tồn tại hoặc bạn không có quyền. Lỗi trong máy chủ SQL