T-SQL で次のようなグループ化集計を実行する必要があります。
select b.Name as [Grouped Name],
COUNT(distinct a.ID) as [Grouped Count],
COUNT(distinct c1.ID) as [Second Group Count],
COUNT(distinct c2.ID) as [Third Group Count]
from TableA a
left join TableB b on a.ID = b.TableAID
left join TableC c1 on a.ID = c1.TableAID and c1.SomeCondition = 1
left join TableC c2 on a.ID = c2.TableAID and c2.SomeCondition = 2
group by b.Name
order by b.Name
オブジェクト モデルを構築し、それを NH3 を使用してマップし、この SQL 構文を構築するクエリを構築しようと何度も試みましたが、ほとんど成功していません。
これは NH3 を使用して実行できることですか? もしそうなら、LINQでそれを行う方法はありますか? または基準API?またはHQL?
この時点で、私は何に対してもオープンです。私がこれまでに行ったすべてのうさぎの穴は私をどこにも導いていないので、私はただ正しい方向に向けられる必要があります.
これまでに試したLINQは次のとおりです。
//act
var query = from a in session.Query<TableA>()
orderby a.TableB.Name
select
new
{
Grouped Name = a.TableB.Name,
GroupedCount = a.Count(),
SecondGroupCount = a.TableC.Count(c => c.SomeCondition == 1),
ThirdGroupCount = a.TableC.Count(c => c.SomeCondition == 2),
};
var results1 = query.ToList();
group by でも試してみましたが、何をしても、複数の集計で TableC を参照すると、NH3 は常に例外をスローします。集計が 1 つしかない場合、クエリが実行されます。2 つの集計でそれを実行しようとすると、例外が発生します。