我有想要在Criteria api中编写的sql:
SELECT CASE
WHEN total_pages = 0 THEN '0 pages'
WHEN total_pages BETWEEN 1 AND 3 THEN '1-3 pages'
WHEN total_pages BETWEEN 4 AND 6 THEN '4-6 pages'
WHEN total_pages > 6 THEN '7 + pages'
END AS pagerange, sum(total_pages) AS 'Total'
FROM dbo.connector_log_entry
GROUP BY
CASE
WHEN total_pages = 0 THEN '0 pages'
WHEN total_pages BETWEEN 1 AND 3 THEN '1-3 pages'
WHEN total_pages BETWEEN 4 AND 6 THEN '4-6 pages'
WHEN total_pages > 6 THEN '7 + pages'
END
ORDER BY pagerange发布于 2011-02-01 21:39:00
var groupBy = @"
CASE
WHEN total_pages = 0 THEN '0 pages'
WHEN total_pages BETWEEN 1 AND 3 THEN '1-3 pages'
WHEN total_pages BETWEEN 4 AND 6 THEN '4-6 pages'
WHEN total_pages > 6 THEN '7 + pages'
END";
var pagerange = Projections.SqlGroupProjection(groupBy + " pagerange",
groupBy,
new[] { "pagerange" },
new[] { NHibernateUtil.String });
var results = session.CreateCriteria<ConnectorLogEntry>()
.SetProjection(pagerange,
Projections.Sum("TotalPages"))
.List();这里假设您的类名为ConnectorLogEntry,映射到total_pages列的属性名为TotalPages。
我欠你一个比特的订单,但你总是可以在客户端排序。
https://stackoverflow.com/questions/4862203
复制相似问题