1

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

4

1 回答 1

-1

不确定,但我敢打赌微软没有花时间在 LINQ-to-SQL 中实现这样的结构,因为如果 LINQ-to-SQL 已经存在,就不需要它了运作良好。

关于亚音速,我不能说太多。

于 2014-12-08T21:10:13.753 回答