我有一个这样的时间表(航行)表:
ID Arrival Departure OrderIndex
1 01/01/1753 02/10/2009 0
1 02/11/2009 02/15/2009 1
1 02/16/2009 02/19/2009 2
1 02/21/2009 01/01/1753 3
2 01/01/1753 03/01/2009 0
2 03/04/2009 03/07/2009 1
2 03/09/2009 01/01/1753 2
按照设计'01/01/1753'
,如果用户没有填写捕获屏幕上的字段以及从未提供的第一次到达和最后一次离开,我将保存为默认值。我使用 Nhibernate 和 Criteria,我想知道如果我想知道表中每个航次的第一次出发和最后一次到达,查询这些数据的最佳方法是什么。
我的第一个想法是 groupby (ID),然后在到达和离开时做一些 Min 和 Max,但 ''01/01/1753' VALUE 很混乱。
...
.SetProjection(Projections.ProjectionList()
.Add(Projections.GroupProperty("ID"), "ID")
.Add(Projections.Min("DepartureDate"), "DepartureDate")
.Add(Projections.Max("ArrivalDate"), "ArrivalDate")
)
...
那么有没有办法在 Min 函数比较中跳过这个值(不会丢失整行数据),或者有更好的方法来做到这一点,也许利用总是指示元素正确顺序的 OrderIndex,也许是排序ASC 获得第一个然后 Order DESC 并再次获得第一个,但我不太确定如何使用标准语法来做到这一点。