繁体   English   中英

跨多个表聚合SQL查询

[英]Aggregate SQL query across multiple tables

我使用的是MS Access2010。该数据库包含一组12个相同的设备表,每个表分别用于公司的12个不​​同部门。 该表跟踪负责设备的人员(资源)需要采取的行动。 我有一个简单的查询,该查询计算具有各种状态的资源的数量。 它看起来如下:

SELECT dept1.actions.resource, dept1.action.status, Count(*) AS status_count
FROM dept1.action
GROUP BY dept1.action.status, dept1.action.resource;

每个表如下所示:

equip_id, text
resource, number (id of the resource who is responsible for the equipment)
status, number (id of the status of the action that the resource needs to do)

查询结果如下所示:

resource  status  status_count
1         1       63
2         1       79
5         1       16
6         1       3
0         3       1
1         3       1180
2         3       64
3         3       61
5         3       1
6         3       2
7         3       12
0         4       4

例如,第一行显示资源1具有状态为1的63个设备。第二行显示资源2具有状态1 ...的79个设备,依此类推。

我需要的是一个聚合查询,该查询可为所有资源和状态组合(即完全相同的结果表)提供公司级别的总计,不同之处在于status_count列的数量要大得多。

感谢您提供任何帮助。

基本上,您可以为数据库中的每个dep表选择计数,将它们合并在一起,然后求和。

SELECT resource,status,sum(status_count) as status_company_count from(
SELECT dept1.actions.resource, dept1.action.status, Count(*) AS status_count
FROM dept1.action
GROUP BY dept1.action.status, dept1.action.resource
UNION
SELECT dept2.actions.resource, dept2.action.status, Count(*) AS status_count
FROM dept2.action
GROUP BY dept2.action.status, dept2.action.resource
UNION
SELECT dept3.actions.resource, dept3.action.status, Count(*) AS status_count
FROM dept3.action
GROUP BY dept3.action.status, dept3.action.resource
.....)
group by resource,status;

如果您能够进行模式更改,则将12个表合并为一个表,并为Departmentid附加一列。 如果您无法更改数据库结构,则可以添加一个新表。 然后,您可以添加一个临时表以将每个表的结果捕获到此临时结果表SELECT ... INTO中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM