按一行中的条件转换 table

Transforming a table by the condition in one row

我有一个table这样的

Day        Operation       Times Condition
Monday     addition        3     done
Monday     subtraction     2     done
Monday     subtraction     4     uncomplete
Tuesday    multiplication  3     done
Tuesday    addition        1     done
Tuesday    addition        8     uncomplete
Wednesday  subtraction     1     uncomplete

我想将 Condition 列转换为两个不同的列,例如

Day        Operation       Done  Uncomplete Total
Monday     addition        3     0          3
Monday     subtraction     2     4          6
Tuesday    multiplication  3     0          3
Tuesday    addition        1     8          9
Wednesday  subtraction     0     1          1

将已完成和未完成的操作融合在一行中

在SQL有没有办法做到这一点?

到目前为止,我已经尝试过类似 Creating multiple columns from one column 的使用案例。我想我可能需要先按天分组,然后再按操作分组。

一种方法是条件聚合:

select day, operation,
       sum(case when condition = 'done' then times else 0 end) as dones,
       sum(case when condition = 'uncomplete' then times else 0 end) as uncompletes,
       sum(times) as total
from t
group by day, operation;

您需要用您正在使用的数据库标记您的问题。 MS Access 中的等价物是:

select day, operation,
       sum(iif(condition = "done", times, 0))  as dones,
       sum(iif(condition = "uncomplete", times, 0)) as uncompletes,
       sum(times) as total
from t
group by day, operation;

考虑到您是在 Microsoft Access 上执行此操作,请参考以下教程:https://www.youtube.com/watch?v=ZgerpTHzQes