sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik deze query maken in SQL Server Compact Edition?

Er zijn gevallen waarin u een subquery niet kunt vermijden, bijvoorbeeld als u berekende kolommen moet opnemen die gegevens uit de huidige en de vorige rij gebruiken. Beschouw deze vraag bijvoorbeeld:

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)

Het zal een parseerfout veroorzaken:

Ik vond deze thread op MSDN met een tijdelijke oplossing. Door de subquery te wijzigen zodat deze een set retourneert in plaats van een scalaire waarde, kon ik de volgende query opslaan en uitvoeren.

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. mysql Bij Dubbele waarde in veld, voeg nieuwe rij in met nieuwe waarde

  2. Windows7 WAMP 64-bit stack MySQL-problemen

  3. Laatste (laatste) onderscheiden hoogste waarde ophalen

  4. Hoe MySQL of MariaDB Galera Cluster te Bootstrap - Bijgewerkt