आपको GROUP BY
का उपयोग करना होगा
जैसे अपना वांछित परिणाम प्राप्त करने के लिए:
SELECT
order_id,
part_id,
SUM(cost) AS total
FROM orders
WHERE order_date BETWEEN xxx AND yyy
GROUP BY order_id, part_id
यह आपके परिणामों को समूहीकृत करेगा। ध्यान दें कि चूंकि मुझे लगता है कि order_id
और part_id
एक यौगिक PK है, SUM(cost)
उपरोक्त में संभवतः = cost
होगा (चूंकि आप दो क्षेत्रों के संयोजन से एक समूह बनाते हैं जो अद्वितीय होने की गारंटी है। नीचे सहसंबद्ध उपश्रेणी इस सीमा को पार कर जाएगी)।
लाई गई सभी गैर-समग्र पंक्तियों को GROUP BY
. में निर्दिष्ट करने की आवश्यकता है पंक्ति।
अधिक जानकारी के लिए, आप GROUP BY
. के बारे में एक ट्यूटोरियल पढ़ सकते हैं यहाँ:
संपादित करें: यदि आप किसी कॉलम को एग्रीगेट और नॉन-एग्रीगेट दोनों के रूप में उपयोग करना चाहते हैं, या यदि आपको अपने समूहों को अलग करने की आवश्यकता है, तो आपको इस तरह एक सबक्वेरी का उपयोग करना होगा:
SELECT
or1.order_id,
or1.cost,
or1.part_id,
(
SELECT SUM(cost)
FROM orders or2
WHERE or1.order_id = or2.order_id
GROUP BY or2.order_id
) AS total
FROM orders or1
WHERE or1.order_date BETWEEN xxx AND yyy