3

同じ基準でグループ化するだけでなく、毎日に基づいてカウントを照会する必要があります。生成されたクエリは次のようになります。

select SendTo, dateadd(dd,
                 0,
                 datediff(dd,
                          0,
                          WorkToBeginDate))
from Locates
group by SendTo, dateadd(dd,
                 0,
                 datediff(dd,
                          0,
                          WorkToBeginDate))

現在、以下のクエリを使用していますが、date.

var dateGroupBy = Projections.SqlFunction("date", NHibernateUtil.Date,
    Projections.Group<Domain.Locate>(g => g.WorkToBeginDate));

var stats = 
    _session.QueryOver<Domain.Locate>()
    .SelectList(x => x
        .SelectGroup(xx => xx.SendTo).WithAlias(() => statsDto.SentTo)
        .SelectCount(xx => xx.LocateId).WithAlias(() => statsDto.Count)
        .Select(dateGroupBy)
        .WithAlias(() => statsDto.DueDate))
    .TransformUsing(Transformers.AliasToBean<StatsDto>())
    .List<StatsDto>();

このクエリを実行すると、

SELECT   this_.SendTo                             as y0_,
         count(this_.LocateId)                    as y1_,
         dateadd(dd,
                 0,
                 datediff(dd,
                          0,
                          this_.WorkToBeginDate)) as y2_
FROM     Locates this_
GROUP BY this_.SendTo,
         this_.WorkToBeginDate

私は自分の予測でSelectはなく、使用しているためだと思います。SelectGroup私は試し.SelectGroup(xx => new SqlFunctionProjection("date", NHibernateUtil.Date, Projections.Group<Domain.Locate>(g => g.WorkToBeginDate)))ましたが、これは私に与えますCould not determine member from new SqlFunctionProjection("date", NHibernateUtil.Date, new [] {Group(g => Convert(g.WorkToBeginDate))})

4

1 に答える 1

3

dateGroupBy 値を別のProjections.Groupメソッドでネストできます。

var dateGroupBy = Projections.Group(Projections.SqlFunction("date", NHibernateUtil.Date,
Projections.Group<Domain.Locate>(g => g.WorkToBeginDate)));

これにより、望ましい結果が得られるはずです。:)

于 2011-05-16T11:59:42.987 に答える