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

làm thế nào để lặp qua một bảng để tìm tập dữ liệu?

Bạn có thể thực hiện việc này một cách dễ dàng bằng cách pivoting dữ liệu. Nó có thể được thực hiện theo hai cách.

1.Sử dụng Conditional Aggregate để xoay vòng dữ liệu. Sau khi pivoting bạn có thể tìm thấy datediff giữa các giai đoạn khác nhau. Hãy thử điều này.

SELECT orderid,Received,Keyed,Printed,Delivered,
       Datediff(minute, Received, Keyed)    TurnTime1,
       Datediff(minute, Keyed, Printed)     TurnTime2,
       Datediff(minute, Printed, Delivered) TurnTime3
FROM  (SELECT OrderID,
              Max(CASE WHEN ActivityID = 1 THEN ActivityDate END) Received,
              Max(CASE WHEN ActivityID = 2 THEN ActivityDate END) Keyed,
              Max(CASE WHEN ActivityID = 3 THEN ActivityDate END) Printed,
              Max(CASE WHEN ActivityID = 4 THEN ActivityDate END) Delivered
       FROM   Yourtable
       GROUP  BY OrderID)A 

2. sử dụng Pivot để chuyển đổi dữ liệu

SELECT orderid,
       [1]                        AS Received,
       [2]                        AS Keyed,
       [3]                        AS Printed,
       [4]                        AS Delivered,
       Datediff(minute, [1], [2]) TurnTime1,
       Datediff(minute, [2], [3]) TurnTime2,
       Datediff(minute, [3], [4]) TurnTime3
FROM   Yourtable
       PIVOT (Max(ActivityDate)
             FOR ActivityID IN([1],[2],[3],[4]))piv 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 3 cách trả về danh sách công việc tác nhân máy chủ SQL (T-SQL)

  2. Nhập các tệp excel có tiêu đề thay đổi

  3. Chúng ta có thể chuyển các tham số cho một dạng xem trong SQL không?

  4. Sử dụng SolarWinds Serv-U trên Linux với Cơ sở dữ liệu xác thực máy chủ SQL

  5. Tại sao SQL Server làm tròn kết quả của phép chia hai số nguyên?