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

これは、スタッフと日付によるグループを使用して、各タイプの個別の合計と、この 3 つのタイプの合計を取得したいということです。

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 に答える