sql - 物化 View 中的动态计算

标签 sql oracle plsql data-warehouse

我有一个问题,我创建了一个完美工作的物化 View 。但是现在我需要对我 View 中的数据进行一些计算。该 View 包含在不同项目中工作的员工的工作时间。每个项目都有固定的时间 (time_available),员工必须在该时间内完成项目。为了更好地展示,我将工作时间汇总到一个月。我想在这里完成的是“项目固定金额”减去员工“工作时间”的“简单”减法。 这里的问题是有些项目的持续时间超过一个月。自然地,我每个月的所有值都在一个元组中。因此,当我有 3 个月的工作时间用于某个项目时,我的观点如下所示:

MV_Working_Hours:

Project --- Time_Available --- DATE --- Employee --- Working Days
Project A --- 50 Days --- 2011-05 --- Mr. A --- 15 Days
Project A --- 50 Days --- 2011-06 --- Mr. A --- 16 Days
Project A --- 50 Days --- 2011-07 --- Mr. A --- 16 Days

我想做的是像这样计算剩余天数:

Project --- Time_Available --- DATE --- Employee --- Working d in Month ---remaining days
Project A --- 50 Days --- 2011-05 --- Mr. A --- 15 Days --- 35 Days
Project A --- 50 Days --- 2011-06 --- Mr. A --- 16 Days --- 19 Days <--- I get here 34 which is for my need wrong !!!
Project A --- 50 Days --- 2011-07 --- Mr. A --- 16 Days --- 3 Days

有没有一种方法可以使用“仅”sql 来实现这一点,还是我必须在 OWB 中使用 pl/sql?我用的是OWB版本11gR2

谢谢

最佳答案

您应该能够使用分析函数生成运行总计。有点像

SELECT project,
       time_available,
       date_column,
       employee,
       working_days_in_month,
       time_available - 
         sum(working_days) over (partition by project 
                                     order by date) remaining_days
  FROM mv_working_hours

关于sql - 物化 View 中的动态计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032584/

相关文章:

java - 如何使用java从oracle数据库中随机选择图像

java - Java 中的重复 Oracle DES 加密

sql - CTAS 功能

缺少结束日期的两个日期之间的 SQL (SSRS)

mysql - 无法解决此 SQL 查询结果

sql - 自动测试存储过程是否仍然有效 + SQL SERVER

mysql - 选择类别树中某处具有 category_id 的记录

sql - 根据任意时间过滤SQL查询结果集

sql - 在多数据库环境中使用返回自定义类型的函数

sql - pl/sql中双竖线的使用