0

我有一个复杂的 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

这意味着我想使用按人员和日期分组的每种类型的单独总和,以及这三种类型的总数。

4

1 回答 1

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

但是,使用聚合函数时无法获取日期。这样做也没有意义,因为您不是在日期使用 group by,而是使用工作人员。

于 2013-02-17T04:58:32.530 回答