Bắt đầu ngayBắt đầu miễn phí

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ặc LAG() 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

Xem khóa học

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 OrderDate xuống 1 hàng. Đặt tên cột này là PreviousOrder.
    • Dịch chuyển các giá trị trong OrderDate lên 1 hàng. Đặt tên cột này là NextOrder. Bạn sẽ cần PARTITION BY theo lãnh thổ

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
Chỉnh sửa và Chạy Mã