시간당 하루 공항에 오는 사람들의 기록을 그룹화하려고합니다. 그래서 기본적으로 저는 특정 공항에서 매 시간마다 많은 사람들이 방문하기를 바랍니다. 아래 코드는 그것을위한 것입니다.프로젝션 쿼리에서 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
을 기록을 제공하는 날짜와 공항 반복하지 말라. 1-2 시간, 2-3am 등등 ...
왜 사실 이후에 데이터를 조작하지 않습니까? 이것은 nhibernate 문제처럼 보이지 않습니다. – Vadim
나는 많은 공항이 있기 때문에 알고 있지만 프로젝션 쿼리를 사용하면 주변 환경이 조금 복잡해 질 수 있다고 생각했다. – developer