SQL Server 2012 でリリースされた新しいウィンドウ集計関数を実行できる SQL ジェネレーターを探しています。Subsonic と LINQ については既に調べましたが、NHibernate などについてはまだ調べていません。
例として、Subsonic の構文を使用して、次のことを行いたいと思います。
var query = new Select(Aggregate.Avg("Revenue", "MovingAverageRevenue")
.PartitionBy("Account_ID").OrderBy("Offset").RowsBetween(-5,-1)))
.From("Purchases")
.Where("MovingAverageRevenue")
.IsGreaterThan(500);
これは次のように変換されます。
SELECT Aggregates.MovingAverageRevenue
FROM
(
SELECT AVG(Revenue) OVER
(PARTITION BY Account_ID
ORDER BY Offset
ROWS BETWEEN 5 PRECEDING AND 1 PRECEDING) AS MovingAverageRevenue
FROM Purchases
) Aggregates
WHERE Aggregates.MovingAverageRevenue > 500
おそらく、既存の ORM の拡張を含むソリューションも機能する可能性があります。