sql - 我需要根据同一查询中其他字段的多个条件对一个字段的值求和。例如

标签 sql ms-access

我已经在Access中建立了一个数据库。我现在需要使用多个查询将数据解释为报告。问题在于每一列都是根据多个条件从源表计算得出的。

例如

----------------------------------------------------------------------
Staff Number | Sale Type | Sale Variant | Price |
-------------------------------------------------------------------
1            | Brick     |      1       |  £10  |
1            | Sand      |      2       |  £5   |
2            | Brick     |      1       |  £6   |

因此,我想创建一个查询,输出每个员工编号(以及员工表中的姓名),拆分每个变体和类型并对价格求和

所以

-------------------------------------------------------------------
Staff Number | Brick 1 | Brick 2 | Sand 1 | Sand 2 |
--------------------------------------------------------------------
1            |   £10   |   £0    |   £0   |    £5  |
2            |   £6    |   £0    |   £0   |    £0  |

我可以轻松地进行单独查询以分别对每一列求和,但无法将它们放入一个表或报告中。

最佳答案

您可以使用条件聚合:

select staffnumber,
       max(iif(sale_type = "Brick" and sale_variant = 1, price, 0)) as brick_1,
       max(iif(sale_type = "Brick" and sale_variant = 2, price, 0)) as brick_2,
       max(iif(sale_type = "Sand" and sale_variant = 1, price, 0)) as sand_1,
       max(iif(sale_type = "Sand" and sale_variant = 2, price, 0)) as sand_2
from t
group by staffnumber;

关于sql - 我需要根据同一查询中其他字段的多个条件对一个字段的值求和。例如,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57255792/

相关文章:

sql - oracle pl/sql ORA-01790 : expression must have same datatype as corresponding expression

c++ - 剥离 OLE header 信息 (MS Access/SQL Server)

sql - 子查询返回 1 个结果,因此结果保持不同

mysql - Datediff & Group By 不起作用?

sql - java.sql.SQLSyntaxErrorException : ORA-00955: name is already used by an existing object

sql - 无法从 SQL Management Studio 连接到 Azure 数据库

sql - Mysql查询困惑

mysql - mysql多表select

sql - Microsoft Access SQL 查询忽略年份的日期范围

database - 为ms access数据库提供安全标准