2011-09-12 17 views
2

こんにちは私はQueryOverにfolowing SQLを翻訳する必要があります 可能でしょうか?私の実際のクエリはもっと​​複雑かもしれません。しかし、私はこの段階で立ち往生しています。複雑なQueryOver

SELECT InnerQuery.USERID, 
InnerQuery.TRAFFICZONEID, 
InnerQuery.StatusCategory, 
COUNT(*) AS LineCount 
FROM (
SELECT MissionID, 
    UserId, 
    TRAFFICZONEID, 
    CASE 
     WHEN status BETWEEN 1 
       AND 5 
      THEN 1 
     WHEN status BETWEEN 6 
       AND 8 
      THEN 2 
     WHEN status BETWEEN 9 
       AND 17 
      THEN 3 
     ELSE 0 
     END AS [StatusCategory] 
FROM mission 
) AS InnerQuery 
LEFT OUTER JOIN trafficzone t ON InnerQuery.TRAFFICZONEID = t.Trafficzoneid 

GROUP BY InnerQuery.USERID, 
InnerQuery.TRAFFICZONEID, 
InnerQuery.StatusCategory 

QueryOverでこの種の機能を実行することはできますか?それとも、NHibernateでそれを行うための最良の方法は何ですか?

は、

DineshNS複雑なクエリの場合

答えて

-1

をありがとう、あなたは、データベース内のビューを作成し、NHibernateのからそれを使用することができます。

0

これはHQLを使用することをお勧めします。

NHibernateでサポートされているすべてのクエリメソッドから、自由形式クエリで最も効果的なものです。

直接サポートしていないのは、サブクエリへの外部結合だけです。サブクエリ(from A, (subquery) B where A.X = B.X)とサブクエリに一致する要素を持たない項目の暗黙的な結合(from A, (subquery) B where A.X = B.X)とUNIONを使用すると、偽装することができます。