Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在sql中对多个列进行分组_Mysql_Sql - Fatal编程技术网

Mysql 如何在sql中对多个列进行分组

Mysql 如何在sql中对多个列进行分组,mysql,sql,Mysql,Sql,我的桌子如下所示 ID EMP_ID AMOUNT MODE 1 E01 1000 CASH 2 E01 2000 CASH 3 E01 3000 DD 4 E01 1000 DD 5 E02 1500 CASH 6 E02 2000 DD 我想计算每个Emp支付的总金额,以及基于模式支付的金额总和。 例如,我希望结果为'7000'作为总额,'3000'作为现金,'4000'作为E

我的桌子如下所示

ID  EMP_ID  AMOUNT  MODE
1   E01     1000    CASH
2   E01     2000    CASH
3   E01     3000    DD
4   E01     1000    DD
5   E02     1500    CASH
6   E02     2000    DD
我想计算每个Emp支付的总金额,以及基于模式支付的金额总和。 例如,我希望结果为'7000'作为总额,'3000'作为现金,'4000'作为E01的DD

我尝试了下面的查询,但无法得到上面的结果

select sum(AMOUNT) as totalAmount from fees where EMP_ID = 'E01' group by mop
有人能提出一个查询以获得上述结果吗

编辑:

我想要如下所示的结果表

    ID  EMP_ID  TOTAL_AMOUNT    CASH_AMOUNT     DD_AMOUNT
    1   E01     7000            3000            4000
    2   E02     3500            1500            2000

将求和函数与IF函数结合使用:

   SELECT EMP_ID,
          SUM(amount) AS TOTA_AMOUNT, 
          SUM(IF(`mode` = 'CASH', amount, 0)) AS CASH_AMOUNT,
          SUM(IF(`mode` = 'DD', amount, 0)) AS DD_AMOUNT
     FROM fees
 GROUP BY emp_id

SQL Fiddle:

对现金/dd求和的用例:

select EMP_ID,
       sum(AMOUNT) as totalAmount,
       sum(case when MODE = 'CASH' then AMOUNT else 0 end) as CASH_AMOUNT,
       sum(case when MODE = 'DD' then AMOUNT else 0 end) as DD_AMOUNT
from fees
group by EMP_ID

您正在使用MySQL和SQL Server吗?(如果没有,则取消标记未使用的。)向我们显示想要的结果(使用已经给出的sampe数据。)@jarlh我已为上述样本数据添加了结果表。当您有100名员工时会发生什么?非常感谢jordi。。这就是我要找的。完美的