按一行中的条件转换表

时间:2016-02-16 14:14:04

标签: sql ms-access case

我有一张这样的表

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。我想我可能需要先按日分组,然后按操作分组。

2 个答案:

答案 0 :(得分:0)

一种方法是条件聚合:

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;

答案 1 :(得分:0)

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