2013-05-10 50 views
1

我正在寻找一个SQL生成器,它可以执行在SQL Server 2012中发布的新窗口聚合函数。我已经看过Subsonic和LINQ,但还没有看过NHibernate和其他一些。C#SQL生成器在SQL Server 2012中执行新的T-SQL窗口函数?

举个例子,使用亚音速语法,我想做到以下几点:

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也可以工作。

回答

-1

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

我不能多说亚音速。