sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo puedo hacer esta consulta en SQL Server Compact Edition?

Hay casos en los que no puede evitar una subconsulta, por ejemplo, si tiene que incluir columnas calculadas que usan datos de la fila actual y la anterior. Considere esta consulta, por ejemplo:

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)

Provocará un error de análisis:

Encontré este hilo en MSDN que tiene una solución. Al cambiar la subconsulta para que devuelva un conjunto en lugar de un valor escalar, pude guardar y ejecutar la siguiente consulta.

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)