sql >> Databasteknik >  >> RDS >> Sqlserver

Hur gör jag den här frågan i SQL Server Compact Edition?

Det finns fall då du inte kan undvika en underfråga, till exempel om du måste inkludera beräknade kolumner som använder data från nuvarande och föregående rad. Tänk på den här frågan, till exempel:

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 kommer att orsaka ett analysfel:

Jag hittade den här tråden på MSDN som har en lösning. Genom att ändra underfrågan så att den returnerar en uppsättning istället för ett skalärt värde, kunde jag spara och köra följande fråga.

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. Symfony2 och Doctrine2:Ingen identifierare/primärnyckel specificerad för Entitet X. Varje Entitet måste ha en identifierare/primärnyckel

  2. Mycket långsamma (1 sekund) anslutningar

  3. Inre sammanfogning med liknande klausul

  4. MyISAM-dialekt genererar fel DDL