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

Dịch tham gia MySQL sang cú pháp SQL Server?

WITH Data AS
(
 SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) AS Row_Number,
 ID,
 AverageValue
 FROM Table
)
SELECT * FROM Data WHERE Row_Number = 1

Đây là cách bạn nên làm trong SQL Server. Nó làm cho "cuối cùng / đầu tiên / tối đa / phút / lớn nhất-n-mỗi nhóm" dễ dàng như chiếc bánh.

PARTITION BY từ khóa ở đây bằng GROUP BY của bạn và ORDER BY ở đây sẽ dịch thành MAX hàm tổng hợp bạn đã sử dụng trong MySQL

Sử dụng điều này sẽ cho phép bạn làm một số công việc ưa thích như:

WITH Data AS
    (
     SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Date DESC) AS Row_Number,
     ID,
     AverageValue
     FROM Table
    )

SELECT Newest.ID, 
Newest.AverageValue, 
(Newest.AverageValue - Next_Newest.AverageValue) AS AverageValue_Change,
Newest.Date
 FROM Data Newest
LEFT OUTER JOIN Data Next_Newest 
 ON Newest.Row_Number+1 = Next_Newest.Row_Number
AND Newest.ID = Next_Newest.ID 

WHERE Newest.Row_Number=1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối một trường liên quan đến nhiều hàng của một bản ghi trong bộ truy vấn trong Django

  2. Hibernate:Sử dụng hai lược đồ DataBase khác nhau trong cùng một ứng dụng

  3. Đối chiếu MySQL nào tốt nhất để chấp nhận tất cả các ký tự unicode?

  4. ĐẶT HÀNG BẰNG cho các giá trị tiền tệ

  5. Cần gửi thông báo trong một loạt 1000