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

Làm cách nào để thực hiện truy vấn này trong SQL Server Compact Edition?

Có những trường hợp bạn không thể tránh một truy vấn con, chẳng hạn như nếu bạn phải bao gồm các cột được tính toán sử dụng dữ liệu từ hàng hiện tại và hàng trước đó. Hãy xem xét truy vấn này, chẳng hạn:

SELECT     
     (Current.Mileage - Last.Mileage)/Quantity as MPG
FROM         
     GasPurchases AS Current
     LEFT OUTER JOIN GasPurchases AS Last
     ON Last.Date =
        (SELECT MAX(PurchaseDate)
        FROM GasPurchases
        WHERE PurchaseDate < Current.PurchaseDate)

Nó sẽ gây ra lỗi phân tích cú pháp:

Tôi đã tìm thấy chuỗi này trên MSDN có cách giải quyết khác. Bằng cách thay đổi truy vấn con để nó trả về một tập hợp thay vì một giá trị vô hướng, tôi đã có thể lưu và chạy truy vấn sau.

SELECT     
     (Current.Mileage - Last.Mileage)/Quantity as MPG
FROM         
     GasPurchases AS Current
     LEFT OUTER JOIN GasPurchases AS Last
     ON Last.Date IN
        (SELECT MAX(PurchaseDate)
        FROM GasPurchases
        WHERE PurchaseDate < Current.PurchaseDate)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. “Đảo ngược hàng” trong SQL Server là gì?

  2. Dấu ngoặc nhọn trong T-SQL

  3. Chức năng phân chia bằng dấu phẩy trong SQL Server 2008

  4. Làm thế nào để tìm ra bảng nào mà một khóa trang thuộc về

  5. Gói SSIS đưa ra lỗi sau khi triển khai SQL Server 2012