sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kan jeg lave denne forespørgsel i SQL Server Compact Edition?

Der er tilfælde, hvor du ikke kan undgå en underforespørgsel, for eksempel hvis du skal inkludere beregnede kolonner, der bruger data fra den aktuelle og den foregående række. Overvej denne forespørgsel, for eksempel:

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)

Det vil forårsage en parsingsfejl:

Jeg fandt denne tråd på MSDN, der har en løsning. Ved at ændre underforespørgslen, så den returnerer et sæt i stedet for en skalarværdi, var jeg i stand til at gemme og køre følgende forespørgsel.

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. SQL Server-pivot vs. multiple join

  2. Oracle 10g - optimer WHERE IS NOT NULL

  3. Oracle:betyder kolonnerækkefølgen noget i et indeks?

  4. Serienumre pr. gruppe af rækker for sammensat nøgle