我的代码
我有一个访问查询:
SELECT DISTINCT [Request-Priority, ALL_Q].RequestID, "Awaiting Approval" AS RequestStatus
FROM [Request-Priority, ALL_Q] LEFT JOIN LIST_RequestBurndown_Q ON [Request-Priority, ALL_Q].RequestID = LIST_RequestBurndown_Q.RequestID
WHERE (((LIST_RequestBurndown_Q.MilestoneStatus)="Awaiting Approval") AND (([Request-Priority, ALL_Q].[Completed on]) Is Null))
UNION
SELECT DISTINCT [Request-Priority, ALL_Q].RequestID, "Blocked (see notes)" AS RequestStatus
FROM [Request-Priority, ALL_Q] LEFT JOIN LIST_RequestBurndown_Q ON [Request-Priority, ALL_Q].RequestID = LIST_RequestBurndown_Q.RequestID
WHERE (((LIST_RequestBurndown_Q.MilestoneStatus)="Blocked (see notes)") AND (([Request-Priority, ALL_Q].[Completed on]) Is Null))
UNION
SELECT DISTINCT [Request-Priority, ALL_Q].RequestID, "Completed - Awaiting Rollout" AS RequestStatus
FROM [Request-Priority, ALL_Q] LEFT JOIN LIST_RequestBurndown_Q ON [Request-Priority, ALL_Q].RequestID = LIST_RequestBurndown_Q.RequestID
WHERE (((LIST_RequestBurndown_Q.MilestoneStatus)="Completed") AND (([Request-Priority, ALL_Q].[Completed on]) Is Null));
查询的基本概念... 根据各个里程碑的状态(LIST_RequestBurndown_Q.MilestoneStatus
),确定一个 RequestID 的整体状态([Request-Priority, ALL_Q].RequestID
)。
我的问题
对于某些 RequestID,会有多个状态的里程碑。例如,我可能会得到如下结果:
RequestID RequestStatus
123 Awaiting Approval
243 Blocked
243 Awaiting Approval
243 Completed - Awaiting Rollout
542 Awaiting Approval
我想做的是“优先化”,它RequestStatus
显示所以每个RequestID
.
我一直在尝试考虑如何使用ORDER BY
, WHERE
,来执行此操作DISTINCT ON
,或者甚至可能只是创建一个具有相关优先级的可能状态选项表并使用MAX
- 但此时我只是想多了。任何帮助将不胜感激!