SQL 到 link 交互式报告 Oracle APEX 中项目记录的最新进度更新
SQL to link latest progress update to a project record in an interactive report Oracle APEX
我正在为我的团队创建一个项目数据库。每个项目都位于一个名为 PROJECT 的 table 中,我有一个名为 PROGRESSUPDATES 的单独 table 来跟踪用户添加到他们项目中的任何进度。
我想在交互式报告中显示每个项目的最新更新。
数据样本是:
项目:
id | NAME | Description | Status
______________________
1 | Project 1 | abc | On Track
2 | Project 2 | def | On Hold
3 | Project 3 | ghi | Completed
4 | Project 4 | jkl | Cancelled
5 | Project 5 | mno | On Track
进度更新:
id | NAME | Update | Date
______________________
1 | Project 1 | Update 1 of 3 | 04-APR-16 11.29.00.000000 AM
1 | Project 1 | Update 2 of 3 | 05-APR-16 11.29.00.000000 AM
1 | Project 1 | Update 3 of 3 | 10-APR-16 11.29.00.000000 AM
4 | Project 4 | Update for P4 | 29-MAR-16 01.30.00.000000 PM
4 | Project 4 | New Update for P4 | 05-APR-16 01.30.00.000000 PM
5 | Project 5 | Update for P5 | 05-APR-16 11.47.00.000000 AM
想要的结果:
id | NAME | Description | Status | Latest Update
______________________
1 | Project 1 | abc | On Track | Update 3 of 3
2 | Project 2 | def | On Hold | No update found.
3 | Project 3 | ghi | Completed | No update found.
4 | Project 4 | jkl | Cancelled | New update for P4
5 | Project 5 | mno | On Track | Update for P5
设法让工作中的一些同事解决了这个问题,并希望分享代码以防对其他人有所帮助。
SELECT a.* from (
select
ID,
NAME,
DESCRIPTION,
STATUS,
UPDATE AS "Latest Update",
DATE AS "Update Date",
ROW_NUMBER() OVER (PARTITION BY PROJECTS.ID ORDER BY DATE DESC) AS RN
from "PROJECTS"
LEFT outer join PROGRESSUPDATES
ON PROJECTS.ID = PROGRESSUPDATES.ID
)a
WHERE a.RN =1
我正在为我的团队创建一个项目数据库。每个项目都位于一个名为 PROJECT 的 table 中,我有一个名为 PROGRESSUPDATES 的单独 table 来跟踪用户添加到他们项目中的任何进度。
我想在交互式报告中显示每个项目的最新更新。
数据样本是:
项目:
id | NAME | Description | Status
______________________
1 | Project 1 | abc | On Track
2 | Project 2 | def | On Hold
3 | Project 3 | ghi | Completed
4 | Project 4 | jkl | Cancelled
5 | Project 5 | mno | On Track
进度更新:
id | NAME | Update | Date
______________________
1 | Project 1 | Update 1 of 3 | 04-APR-16 11.29.00.000000 AM
1 | Project 1 | Update 2 of 3 | 05-APR-16 11.29.00.000000 AM
1 | Project 1 | Update 3 of 3 | 10-APR-16 11.29.00.000000 AM
4 | Project 4 | Update for P4 | 29-MAR-16 01.30.00.000000 PM
4 | Project 4 | New Update for P4 | 05-APR-16 01.30.00.000000 PM
5 | Project 5 | Update for P5 | 05-APR-16 11.47.00.000000 AM
想要的结果:
id | NAME | Description | Status | Latest Update
______________________
1 | Project 1 | abc | On Track | Update 3 of 3
2 | Project 2 | def | On Hold | No update found.
3 | Project 3 | ghi | Completed | No update found.
4 | Project 4 | jkl | Cancelled | New update for P4
5 | Project 5 | mno | On Track | Update for P5
设法让工作中的一些同事解决了这个问题,并希望分享代码以防对其他人有所帮助。
SELECT a.* from (
select
ID,
NAME,
DESCRIPTION,
STATUS,
UPDATE AS "Latest Update",
DATE AS "Update Date",
ROW_NUMBER() OVER (PARTITION BY PROJECTS.ID ORDER BY DATE DESC) AS RN
from "PROJECTS"
LEFT outer join PROGRESSUPDATES
ON PROJECTS.ID = PROGRESSUPDATES.ID
)a
WHERE a.RN =1