【问题标题】:Access - Select Distinct based on Field ValueAccess - 根据字段值选择 Distinct
【发布时间】:2016-10-06 19:45:51
【问题描述】:

我的代码

我有一个 Access 查询:

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 BYWHEREDISTINCT ON 来执行此操作,或者甚至可能只是创建一个具有相关优先级的可能状态选项表并使用MAX -但在这一点上,我只是想多了。任何帮助将不胜感激!

【问题讨论】:

    标签: vba ms-access distinct distinct-on


    【解决方案1】:

    建议:建模优先级的表格:

    CREATE TABLE RequestStatusPrioritization
    ( RequestStatus VARCHAR(20) NOT NULL
         REFERENCES RequestStatuses ( RequestStatus ),
      RequestStatusRank INT NOT NULL );
    

    ...然后加入此表并返回最低 (MIN) 排名。

    【讨论】:

    • 是的,这基本上就是我对“关联优先级”表的想法,然后我可以在查询中使用MAX。不过,如果有办法在查询中使用一行代码完成所有操作,我希望避免使用这样的表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多