c# - Creating NHibernate Queryover to get sum of two field product with group by -


मेरे पास दो तालिकाओं इनवॉइस और InvoiceLineItem है। यह InvoiceLineItem तालिका में है:

  आईडी चालान आईडी मात्रा मात्रा यूनिट  

कॉलम मैं द्वारा InvoiceId चालान लाइन आइटम समूह के लिए NHibernate QueryOver बयान बना सकते हैं और UnitPrice और मात्रा के उत्पाद की राशि प्राप्त करना चाहते हैं

एसक्यूएल इस तरह है।

 <कोड> का चयन करें InvoiceId, SUM (मात्रा * UnitPrice) InvoiceLineItem ग्रुप द्वारा InvoiceId से कुल के रूप में  < / प्री> 

मैंने प्रोजेक्शन्स.SUM का इस्तेमाल किया लेकिन मुझे यकीन नहीं है कि हम उसमें दो कॉलम कैसे गुणा कर सकते हैं (यदि यह सही तरीका है)।

ऐसा नहीं लगता है कि ऐसा करने का एक शानदार तरीका है। बंद का निर्माण, आप VarArgsSQLFunction का उपयोग कर सकते हैं:

  InvoiceLineItem lineItemAlias ​​= null; session.QueryOver & LT; InvoiceLineItem & gt; (() = & gt; lineItemAlias) .SelectList (सूची = & gt; सूची .Select (Projections.Sum (Projections.SqlFunction (नई VarArgsSQLFunction ( "(", "*", ")"), NHibernateUtil डबल, Projections.Property (() = & gt; lineItemAlias.Quantity), Projections.Property (() = & gt; lineItemAlias.UnitPrice)))) .SelectGroup (() = & gt; lineItemAlias.Invoice.Id) // TransformUsing , सूची से & lt; & gt ;, आदि  

कि एसक्यूएल कि इस तरह दिखता है उत्पन्न होगा:

 <कोड> का चयन करें योग ((this_.Quantity * this_.UnitPrice)) y0_ के रूप में, InvoiceLineItem this_ ग्रुप this_.InvoiceId द्वारा  
से y1_ रूप this_.InvoiceId

Comments