我有一个复杂的mysql表,如:
staff type value date
a cash 10 2013-02-17
b efpos 5 2013-02-16
c voucher 20 2013-02-16
a cash 10 2013-02-16
b efpos 5 2013-02-16
c voucher 20 2013-02-15
a cash 10 2013-02-15
b efpos 5 2013-02-15
c voucher 20 2013-02-14
我怎样才能得到这样的表?
staff cash efpos voucher total date
a sum sum sum sum(cash, efpos, voucher) 2013-02-16
b sum sum sum sum(cash, efpos, voucher) 2013-02-16
c sum sum sum sum(cash, efpos, voucher) 2013-02-16
这意味着我希望使用分组人员和日期为每种类型获取分离总和,并且还要使用这三种类型的总计。
答案 0 :(得分:0)
这应该有用。
SELECT staff,
SUM(CASE type WHEN 'cash' THEN value ELSE 0 END) as cash,
SUM(CASE type WHEN 'efpos' THEN value ELSE 0 END) as efpos,
SUM(CASE type WHEN 'voucher' THEN value ELSE 0 END) as voucher,
SUM(value) as total
FROM <TABLE_NAME>
GROUP BY staff
但是,使用聚合函数时无法获取日期。这样做也没有意义,因为你没有在约会时使用分组,而是工作人员。