我有一张桌子,看起来像这样:
studentid | studentname | fee | latfeecharges | dues
1 | Alex | 2000 | 200 | 500
1 | Alex | 2000 | 200 | 500
1 | Alex | 2000 | 200 | 500
我希望得到以下结果:
Alex
2700
2700
2700
因此,在这种情况下,fee
,latefeecharges
和dues
会相加,我会单独得到它们,但只想获得一次名称。我该怎么做?
现在我通过使用此查询获得此结果
$query = "SELECT * FROM table ORDER BY studentid ";
alex 2700 alex 2700 alex 2700
答案 0 :(得分:0)
假设您在表中有一个月或某种方式来推导它,您可以使用条件聚合 所以给出了
MariaDB [sandbox]> select * from t;
+-----------+-------------+------+----------------+------+------+
| studentid | studentname | fee | latefeecharges | dues | MTH |
+-----------+-------------+------+----------------+------+------+
| 1 | Alex | 2000 | 200 | 500 | 1 |
| 1 | Alex | 2000 | 200 | 500 | 2 |
| 1 | Alex | 2000 | 200 | 500 | 3 |
+-----------+-------------+------+----------------+------+------+
3 rows in set (0.00 sec)
MariaDB [sandbox]> select studentname,
-> sum(case when mth = 1 then fee+latefeecharges+dues else 0 end) month1,
-> sum(case when mth = 2 then fee+latefeecharges+dues else 0 end) month2,
-> sum(case when mth = 3 then fee+latefeecharges+dues else 0 end) month3
-> from t
-> group by studentname;
+-------------+--------+--------+--------+
| studentname | month1 | month2 | month3 |
+-------------+--------+--------+--------+
| Alex | 2700 | 2700 | 2700 |
+-------------+--------+--------+--------+
1 row in set (0.00 sec)