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