たとえば、現在の行と前の行のデータを使用する計算列を含める必要がある場合など、サブクエリを回避できない場合があります。たとえば、次のクエリについて考えてみます。
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)
解析エラーが発生します:
このスレッドを見つけました 回避策があるMSDNで。サブクエリを変更して、スカラー値ではなくセットを返すようにすることで、次のクエリを保存して実行することができました。
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)