CASE अभिव्यक्ति का उपयोग करके शर्तों के आधार पर एक ही कॉलम के मानों को अलग-अलग आउटपुट कॉलम में मैप करें।
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(40),
Score INT
);
Query OK, 0 rows affected (0.54 sec)
mysql> INSERT INTO DemoTable(Name,Score) VALUES('Chris',45),('David',68),('Robert',89),('Bob',34),('Sam',66);
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+--------+-------+
| Id | Name | Score |
+----+--------+-------+
| 1 | Chris | 45 |
| 2 | David | 68 |
| 3 | Robert | 89 |
| 4 | Bob | 34 |
| 5 | Sam | 66 |
+----+--------+-------+
शर्तों के आधार पर अलग कॉलम में स्कोर के लिए क्वेरी
mysql> SELECT Score,
CASE WHEN Score < 40 THEN Score END AS 'Score Less than 40',
CASE WHEN Score BETWEEN 60 AND 70 THEN Score END AS 'Score Between 60 and 70',
CASE WHEN Score > 80 THEN Score END AS 'Score greater than 80'
FROM DemoTable;
परिणाम:
+-------+--------------------+--------------------------+-----------------------+
| Score | Score Less than 40 | Score Between 60 and 70 | Score greater than 80 |
+-------+--------------------+--------------------------+-----------------------+
| 45 | NULL | NULL | NULL |
| 68 | NULL | 68 | NULL |
| 89 | NULL | NULL | 89 |
| 34 | 34 | NULL | NULL |
| 66 | NULL | 66 | NULL |
+-------+--------------------+--------------------------+-----------------------+
नोट: प्रत्येक CASE स्वतंत्र रूप से मूल्यांकन करता है। मिलान न होने वाली पंक्तियों के लिए NULL लौटाता है। ELSE क्लॉज के साथ डिफ़ॉल्ट मान प्रदान करें।