2011-02-04 68 views
0

我想將每小時每天進入任何機場的人員記錄分組。所以基本上我希望有一些人在任何一個特定的機場都能進來。以下是我的代碼。幫助在投影查詢中使用group by子句

string ArrDate = 
       String.Format("LTRIM(STR(MONTH({0}))) + '/' + LTRIM(STR(DAY({0}))) + '/' + LTRIM(STR(YEAR({0})))", "DestinationDatetime"); 

      string ArrTime= 
       String.Format("rtrim(datepart(hh, DestinationDatetime)) +' Hour'", "DestinationDatetime"); 

      Template.Criteria. 
       SetProjection(
         Projections.ProjectionList() 
         .Add(Projections.Count("ID"), "ACount") 
         .Add(Projections.SqlGroupProjection(ArrDate + " as DateVal", ArrDate 
           new string[] { "DateVal" }, new IType[] { NHibernateUtil.String })) 
         .Add(Projections.SqlGroupProjection(ArrTime + " as TimeVal", ArrTime, 
           new string[] { "TimeVal" }, new IType[] { NHibernateUtil.String })) 
         .Add(Projections.GroupProperty("Airport"), "APort")); 

      Template.Criteria.SetResultTransformer(Transformers.AliasToEntityMap); 

現在,上面的查詢給我記錄在下面的方式,

Date Airport Time  Count 
12/16 ORD  13 Hour  5 
12/16 ORD  17 Hour  6 
12/16 MWK  10 Hour  7 

我希望查詢顯示記錄的,

Date Airport Time  Count 
    12/16 ORD  1 pm  5 
        4pm   6 
      MWK  10 am  7 

以便日期和機場不要不斷重複自己。我希望每個小時後都有人進來.ie,上午1-2點,2-3點之間......

+0

爲什麼不在事後處理數據?這看起來不像是一個煩人的問題。 – Vadim 2011-02-04 19:24:52

+0

我知道,但因爲有很多機場,我想如果有使用投影查詢的方式可能會簡化一些東西.. – developer 2011-02-04 19:30:24

回答

1

即使nHibernate可以爲你做這個,這絕對不是數據庫問題,這是介紹關注。您需要在演示文稿中添加一些忽略重複日期的邏輯。

這是一個asp.net,asp.net MVC,WPF或winforms項目?