2012-04-25 7 views
10

मैं प्रत्येक ग्राहक के लिए ऑर्डर आइटम की सभी (भुगतान) कीमतों का योग चुनना चाहता हूं।इकाई फ्रेमवर्क में ग्रुप और एसयूएम

SELECT c.name,SUM(oi.price * oi.count) from customer c 
JOIN order o ON c.id=o.customer_id 
JOIN order_item oi ON o.id=oi.order_id 
JOIN bill b ON b.id=oi.bill_id 
WHERE b.payment_id is NOT null 
GROUP by c.name; 

मैं कैसे एफई में यह करने के लिए पता नहीं है: यहाँ एसक्यूएल आदेश है। उदाहरण परिणाम:

John Smith 1500,2 
Allan Babel 202,0 
Tina Crown 3500,78 

(अल्पविराम वाले दशमलव point..because कीमत के रूप में इस्तेमाल किया जाता है दशमलव मान)

उत्तर

18

आपका उदाहरण परिणाम अपने एसक्यूएल आदेश मिलान करने के लिए नहीं लगता है, लेकिन मुझे लगता है कि आप देख रहे हैं इस तरह कुछ:

var query = from c in context.Customers 
      join o in context.Orders on c.id equals o.customer_id 
      join oi in context.OrderItems on o.id equals oi.order_id 
      join b in context.bill on oi.bill_id equals b.id 
      where b.payment_id != null 
      group oi by c.name into g 
      select new 
      { 
       Name = g.Key, 
       Sum = g.Sum(oi => oi.price * oi.count), 
      } 
+0

बहुत बहुत धन्यवाद। तुम मेरे सेवर हो :) क्यों मेल नहीं लग रहा है? चयन c.name, SUM() -> तो नाम और कुछ दशमलव होंगे। – quin61

+0

@ quin61 - कोई समस्या नहीं। एसक्यूएल कमांड के परिणामस्वरूप दो कॉलम (नाम, योग) होंगे। आपके उदाहरण में 3 कॉलम (नाम, संख्या, संख्या) प्रतीत होता है। जब तक मैं – Aducci

+0

के लिए अल्पविराम का उपयोग नहीं करता, तब तक मुझे गलत समझा जाता है कि अल्पविराम को दशमलव बिंदु के रूप में उपयोग किया जाता है। अब मैं देखता हूं - यह थोड़ा उलझन में है। मैं उस पोस्ट को संपादित करूंगा – quin61

संबंधित मुद्दे