我已经连续几天撞到墙上了。我觉得这应该很简单,但我一直在我创建的所有查询中找到循环漏洞。
长话短说,通过一系列查询,我生成了一个类似于以下示例的数据集:
RequestID Status
45 Completed
87 Completed
87 Acknowledged
87 In Progress
87 Blocked
99 New
我的下一步是对此数据集运行查询,因此根据以下参数,每个Status
只剩下一个SCRUM RequestID
。因此,对于上面的例子,我希望我的结果显示:
RequestID Status
45 Completed
87 Blocked
99 New
这是我的UML逻辑树,我似乎无法弄清楚如何转换为Access( 请注意: 我只是展示了未来读者的整个逻辑树。对于我的故障排除,案例1,2,4是我需要帮助转换为Access SQL查询的唯一唯一逻辑表达式)...
以下所有案例均基于每RequestID
个基础。
RequestID
的任何记录都有Status
=“已屏蔽”;结果Status
=“已屏蔽”。RequestID
的任何记录都有Status
=“正在等待批准”且该特定RequestID
的记录没有Status
=“已屏蔽”;结果Status
=“等待批准”。RequestID
的任何记录都有Status
=“正在进行中”且该特定RequestID
的记录没有Status
=“已阻止”且没有特定RequestID
的记录Status
=“正在等待批准”;结果Status
=“正在进行中”。RequestID
的任何记录都有Status
=“已完成”并且该特定RequestID
的ARE记录中有Status
=“已确认”。 ..并且该特定RequestID
的记录没有Status
=“已屏蔽”且该特定RequestID
的记录没有Status
=“正在等待批准”;结果Status
=“正在进行中”。RequestID
的任何记录都有Status
=“已确认”且该特定RequestID
没有记录Status
=“被阻止”且不该特定RequestID
的记录有Status
=“正在等待批准”且该特定RequestID
的记录没有Status
=“已完成”并且没有该记录具体RequestID
有一个Status
=“正在进行中”;结果Status
=“已确认”。RequestID
的任何记录都有Status
=“新”且该特定RequestID
的记录没有Status
=“已阻止”并且没有该特定RequestID
的记录有Status
=“正在等待批准”且该特定RequestID
的记录没有Status
=“已完成”并且没有该记录具体RequestID
有一个Status
=“正在进行中”且该特定RequestID
的记录没有Status
=“已确认”;结果Status
=“新”。由于我在比较表中的多行,可能需要self-join
?或者也许可以使用IIF语句来生成Status
字段?我不知道。我做的每一次尝试似乎都失败了,所以在这一点上我真的很喜欢有人如何在Access中做到这一点!
非常感谢任何帮助。
答案 0 :(得分:2)
SELECT RequestID,
Min(IIf([status]="Blocked",Yes)) AS B,
Min(IIf([status]="Awaiting approval",Yes)) AS W,
Min(IIf([status]="In Progress",Yes)) AS IP,
Min(IIf([status]="Completed",Yes)) AS C,
Min(IIf([status]="acknowledged",Yes)) AS Ack,
Min(IIf([status]="New",Yes)) AS N,
Switch([B],"Blocked",[W],"Awaiting Aproval",[IP],"In Progress",[C] And [Ack],"In Progress",[Ack],"Acknowledged",[N],"New") AS Result
FROM Status
GROUP BY RequestID;
这并没有解决上面的问题 - 它将结果留空了已完成但未确认为空白 - 但是一旦更好地定义规则,您应该能够修改逻辑。