我正在尝试使以下 hql 查询工作,但没有成功。我试图找出特定用户的排名,这取决于表单中的字段值。在 SQL 中,这很好用。
SELECT tmp.rang
FROM (
SELECT b.ID as user, rank() as rang OVER (ORDER BY frh.Wert)
FROM EKB.KennzahlenManagement.FormularResultHistorie as frh
JOIN frh.Formular_Bogen_K_Feld fbkFeld
JOIN frh.Formular_Gesendent.Benutzer b
WHERE fbkFeld.FormularBogen.ID =:formularBogenId
AND fbkFeld.ResultFlag = 1
AND frh.Formular_Gesendent.Eingabe_nummer IN
(SELECT MAX(tmp.Eingabe_nummer)
FROM EKB.KennzahlenManagement.Formular_gesendet tmp
WHERE tmp.Benutzer.ID = frh.Formular_Gesendent.Benutzer.ID
AND tmp.Formular.ID = frh.Formular_Gesendent.Formular.ID
GROUP BY tmp.Benutzer
)
) as tmp
WHERE tmp.usr =:userId
到目前为止,我发现了两个问题。
1)由于第二次选择,我得到“NHibernate.Hql.Ast.ANTLR.QuerySyntaxException:抛出'Antlr.Runtime.NoViableAltException'类型的异常。近线......”。我怎么解决这个问题?任何解决方法?
2) rank() 函数似乎有问题。我也遇到了与上述类似的异常。HQL 中没有 rank() 吗?如果有,你能举个例子吗?