Sql 获取SelectSum的别名

Sql 获取SelectSum的别名,sql,nhibernate,Sql,Nhibernate,我试图在NHibernate中复制此SQL查询: SELECT player.NAME, Sum(achievement.value) AS 'Goals Scored' FROM player JOIN playerperformance ON playerperformance.player_id = player.id JOIN achievement ON achievement.playerp

我试图在NHibernate中复制此SQL查询:

SELECT player.NAME, 
       Sum(achievement.value) AS 'Goals Scored' 
FROM   player 
       JOIN playerperformance 
         ON playerperformance.player_id = player.id 
       JOIN achievement 
         ON achievement.playerperformance_id = playerperformance.id 
WHERE  achievement.descriptor = 'Goals Scored' 
GROUP  BY player.NAME, 
          player.id 
ORDER  BY 'Goals Scored' DESC 
以下是我的NHibernate LINQ查询:

_dataAccessor.QueryOver<Player>()
    .Inner.JoinQueryOver<PlayerPerformance>(player => player.Performances)
    .Inner.JoinQueryOver<Achievement>(perf => perf.Achievements, () => achievementAlias)
    .Where(a => a.Descriptor == "Goals Scored")
    .SelectList(list => list.SelectGroup(player => player.Id).SelectSum(() => achievementAlias.Value))
    .OrderBy(a => a.Value).Desc
    .List()
    ;
因此,我所需要做的就是说服NHibernate按y1进行排序,而不是按成就进行排序。但我想不出如何得到总和的别名


有什么想法吗?

我想出来了
SelectSum(…)
有一个
WithAlias
方法,因此我可以指向表示总和的整数别名。然后我不得不使用
OrderByAlias(…)
而不是
OrderBy(…)

int-sumalas=0;
_dataAccessor.QueryOver()
.Inner.JoinQueryOver(player=>player.performance)
.internal.JoinQueryOver(性能=>性能成就,()=>achievementAlias)
.其中(a=>a.描述符==“得分”)
.SelectList(list=>list.SelectGroup(player=>player.Id)。SelectSum(()=>achievementAlias.Value)。WithAlias(()=>sumAlias)
.OrderByAlias(()=>sumAlias).Desc
.List()
;
SELECT this_.id                AS y0_, 
       Sum(achievemen2_.value) AS y1_ 
FROM   [player] this_ 
       INNER JOIN [playerperformance] playerperf1_ 
               ON this_.id = playerperf1_.player_id 
       INNER JOIN [achievement] achievemen2_ 
               ON playerperf1_.id = achievemen2_.playerperformance_id 
WHERE  achievemen2_.descriptor = @p0 
GROUP  BY this_.id 
ORDER  BY achievemen2_.value DESC 
int sumAlias = 0;

_dataAccessor.QueryOver<Player>()
    .Inner.JoinQueryOver<PlayerPerformance>(player => player.Performances)
    .Inner.JoinQueryOver<Achievement>(perf => perf.Achievements, () => achievementAlias)
    .Where(a => a.Descriptor == "Goals Scored")
    .SelectList(list => list.SelectGroup(player => player.Id).SelectSum(() => achievementAlias.Value).WithAlias(() => sumAlias)
    .OrderByAlias(() => sumAlias).Desc
    .List<object[]>()
    ;