我正在寻找可以执行 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 的解决方案也可以工作。