CASE स्टेटमेंट से कंडीशनल एग्रीगेशन
एक ही कॉलम पर अलग-अलग शर्तों के आधार पर SUM और SUBTRACTION करने के लिए CASE स्टेटमेंट का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable866(
Status VARCHAR(100),
Amount INT
);
INSERT INTO DemoTable866 VALUES('ACTIVE', 50);
INSERT INTO DemoTable866 VALUES('INACTIVE', 70);
INSERT INTO DemoTable866 VALUES('INACTIVE', 20);
INSERT INTO DemoTable866 VALUES('ACTIVE', 100);
INSERT INTO DemoTable866 VALUES('ACTIVE', 200);
मौजूदा डेटा
+----------+--------+ | Status | Amount | +----------+--------+ | ACTIVE | 50 | | INACTIVE | 70 | | INACTIVE | 20 | | ACTIVE | 100 | | ACTIVE | 200 | +----------+--------+
क्वेरी: ACTIVE जोड़ें, INACTIVE घटाएं
SELECT SUM(
CASE
WHEN Status = 'ACTIVE' THEN Amount
WHEN Status = 'INACTIVE' THEN -Amount
END
) AS RemainingAmount
FROM DemoTable866;
आउटपुट
+-----------------+ | RemainingAmount | +-----------------+ | 260 | +-----------------+
गणना
ACTIVE: 50 + 100 + 200 = 350
INACTIVE: -(70 + 20) = -90
कुल: 350 - 90 = 260
अधिक शर्तों के साथ विस्तारित उदाहरण
SELECT
SUM(CASE WHEN Status = 'ACTIVE' THEN Amount ELSE 0 END) AS TotalActive,
SUM(CASE WHEN Status = 'INACTIVE' THEN Amount ELSE 0 END) AS TotalInactive,
SUM(CASE WHEN Status = 'PENDING' THEN Amount ELSE 0 END) AS TotalPending,
SUM(CASE
WHEN Status = 'ACTIVE' THEN Amount
WHEN Status = 'INACTIVE' THEN -Amount
ELSE 0
END) AS NetAmount
FROM DemoTable866;
महत्वपूर्ण बिंदु
CASEके अंदर एग्रीगेट फंक्शन (SUM, COUNT) उपयोग करेंELSE 0डिफॉल्ट के लिए महत्वपूर्ण है, नहीं तो NULL परिणाम मिल सकता हैCASEदो फॉर्मेट में आता है: सिंपल (CASE col WHEN val) और सर्च्ड (CASE WHEN condition)- सर्च्ड फॉर्मेट अधिक लचीला है और यहां उपयोग किया गया है