sql >> Databáze >  >> RDS >> Sqlserver

Jak mohu provést tento dotaz v SQL Server Compact Edition?

Existují případy, kdy se poddotazu nevyhnete, například pokud musíte zahrnout počítané sloupce, které používají data z aktuálního a předchozího řádku. Zvažte tento dotaz, například:

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)

Způsobí to chybu analýzy:

Našel jsem toto vlákno na MSDN, který má řešení. Změnou poddotazu tak, aby vracel sadu namísto skalární hodnoty, jsem byl schopen uložit a spustit následující dotaz.

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 Intellisense nefunguje na *některých* serverech

  2. CodeIgniter - jak odeslat hodnotu z formuláře jako NULL místo 0

  3. Upřesnění výsledků vyhledávání na základě filtrů

  4. MYSQL vybere kus řetězce a seřadí podle tohoto kusu