मेरे पास दो तालिकाओं इनवॉइस
और 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 द्वारा
Comments
Post a Comment