Giá trị trước và sau
Nếu bạn muốn dịch chuyển các giá trị trong một cột lên hoặc xuống 1 hàng thì sao? Bạn có thể làm theo đúng các bước như bài tập trước nhưng dùng thêm hai hàm mới: LEAD() cho giá trị kế tiếp và LAG() cho giá trị trước đó. Trình tự như sau:
- Đầu tiên, tạo phân vùng
- Sau đó sắp xếp theo một cột nhất định
- Cuối cùng, dùng các hàm
LEAD()và/hoặcLAG()theo nhu cầu của bạn
Bài tập này là một phần của khóa học
SQL Server trung cấp
Hướng dẫn bài tập
- Viết truy vấn T-SQL sao cho với mỗi lãnh thổ:
- Dịch chuyển các giá trị trong
OrderDatexuống 1 hàng. Đặt tên cột này làPreviousOrder. - Dịch chuyển các giá trị trong
OrderDatelên 1 hàng. Đặt tên cột này làNextOrder. Bạn sẽ cần PARTITION BY theo lãnh thổ
- Dịch chuyển các giá trị trong
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
SELECT TerritoryName, OrderDate,
-- Specify the previous OrderDate in the window
___(OrderDate)
-- Over the window, partition by territory & order by order date
___(___ BY ___ ___ BY ___) AS PreviousOrder,
-- Specify the next OrderDate in the window
___(OrderDate)
-- Create the partitions and arrange the rows
___ AS NextOrder
FROM Orders