You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Primavera P6数据库中获取已计算的Resource Assignments数值?

能否直接从Primavera P6后端数据库获取预计算资源分配结果

可以直接从P6的后端数据库(Oracle、SQL Server为主,部分离线单机版使用SQLite)获取已经调度计算完成的资源分配数值,包括你需要的月度维度统计结果,不需要自行重算P6的调度逻辑。

核心关联表说明

P6调度完成后会自动把计算结果写入预定义的数据库表中,你需要用到的核心表如下:

  • TASKRSRC:资源分配基础表,存储所有资源和任务的绑定关系,以及单条资源分配的总计划工时、总实际工时、总计划成本、总实际成本等全局汇总值
  • TASKRSRC_SUM:时间分段资源分配汇总表,是P6调度后自动按时间周期拆分计算好的结果,按日、周、月等维度聚合的资源分配数值都可以直接从该表获取
  • 如需关联维度信息,可额外关联PROJECT表(项目维度属性)、RSRC表(资源维度属性)、TASK表(任务维度属性)

注意事项

只有在P6客户端或服务端执行过「调度(Schedule)」操作并成功保存项目后,上述表中的数值才会更新为最新结果。如果项目修改后未执行调度,数据库中存储的仍是上一次调度生成的旧数据。

月度统计示例SQL

以下为Oracle环境下按项目、资源、月度维度统计计划工时的参考查询,SQL Server或SQLite仅需替换对应日期处理函数即可:

SELECT
  p.proj_name 项目名称,
  r.rsrc_name 资源名称,
  TRUNC(trs.start_date, 'MONTH') 统计月份,
  SUM(trs.plan_work_qty) 月度计划工时
FROM TASKRSRC_SUM trs
INNER JOIN TASKRSRC tr ON trs.taskrsrc_id = tr.taskrsrc_id
INNER JOIN PROJECT p ON tr.proj_id = p.proj_id
INNER JOIN RSRC r ON tr.rsrc_id = r.rsrc_id
-- 可自行增加过滤条件,比如指定项目ID、时间范围等
WHERE p.proj_id = '1001' 
GROUP BY p.proj_name, r.rsrc_name, TRUNC(trs.start_date, 'MONTH')
ORDER BY 统计月份 DESC, 资源名称;

如果是SQL Server环境,将TRUNC(trs.start_date, 'MONTH')替换为DATEFROMPARTS(YEAR(trs.start_date), MONTH(trs.start_date), 1)即可;SQLite环境替换为strftime('%Y-%m', trs.start_date)。

内容的提问来源于stack exchange,提问作者infotba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:27:02