2013-06-13 70 views
0
SELECT 
    [ProductErpIdentifier], 
    [PriceValue], 
    [ManufacturerProductIdentifier], 
    SUM([QuantityOrdered]) as [QuantityOrdered] 
FROM 
    [eCommerceDev].[dbo].[OrderItem] 
GROUP BY 
    [ProductErpIdentifier],[PriceValue],[ManufacturerProductIdentifier] 
ORDER BY 
    [QuantityOrdered] desc 

我应该如何编写一个CreateCriteria来像上面的例子那样生成SQL?CreateCriteria对聚合函数总和排序

+0

如果您想运行代码,我需要知道您的属性名称。请发布您的orderitem实体的映射。 – TedOnTheNet

+0

我正在使用.Add(Projections.Alias(Projections.Sum(“QuantityOrdered”),“QuantityOrdered”) – stefan

回答

0

这应该可以做到。由于您没有发布您的订单实体的映射,我使用了域名作为属性名称。您需要将OrderItemEntity更改为您自己的映射类,并且您需要更改以oi开头的名称。 (请注意:这些字符串区分大小写!)

var yourResult = Session.CreateCriteria<OrderItemEntity>("oi") 
        .SetProjection(Projections.ProjectionList() 
         .Add(Projections.Alias(Projections.GroupProperty("oi.ProductErpIdentifier"), "ProductErpIdentifier")) 
         .Add(Projections.Alias(Projections.GroupProperty("oi.PriceValue"), "PriceValue")) 
         .Add(Projections.Alias(Projections.GroupProperty("oi.ManufacturerProductIdentifier"), "ManufacturerProductIdentifier")) 
         .Add(Projections.Alias(Projections.Sum("oi.QuantityOrdered"), "QuantityOrdered"))) 
        .AddOrder(Order.Desc("QuantityOrdered")) 
        .List(); 
+0

感谢回答现在我得到无法找到一个setter属性'SummedQuantityOrdered'类'OrderItem',我需要添加索姆临时列OrderItem – stefan

+0

iam使用这也http://nkpatterson.blogspot.se/2010/12/re-usable-nhibernate-paging-extension.html – stefan

+0

@stefan如果你删除AddOrder它会工作吗?如果没有,请发布实体代码(orderitem)和它的映射文件 – TedOnTheNet