标题可能令人困惑。
我有一个案例表,每个案例可以包含许多任务。为了为每个任务实现不同的工作流程,我有不同的表,例如 Case_Emails、Case_Calls、Case_Chats 等...
我想构建一个最终将导出到 Excel 的查询。在此查询中,我想列出每个任务,并且这些任务已经使用通用格式通过另一个表中的 UNION 连接在一起。对于查询中的每个任务,我只希望与案例关联的第一个任务包含案例表中的详细信息。下面的例子:
+----+---------+------------+-------------+-------------+-------------+
| id | Case ID | Agent Name | Task Info 1 | Task Info 2 | Task Info 3 |
+----+---------+------------+-------------+-------------+-------------+
| 1 | 4000000 | Some Name | Detailstuff | Stuffdetail | Thingsyo |
| 2 | | | Detailstuff | Stuffdetail | Thingsyo |
| 3 | | | Detailstuff | Stuffdetail | Thingsyo |
| 4 | 4000003 | Some Name | Detailstuff | Stuffdetail | Thingsyo |
| 5 | | | Detailstuff | Stuffdetail | Thingsyo |
| 6 | 4000006 | Some Name | Detailstuff | Stuffdetail | Thingsyo |
+----+---------+------------+-------------+-------------+-------------+
我最初的方法是尝试对 Case ID 进行 LEFT JOIN,但我不知道如何从额外的行中过滤掉数据。
发现我可以在查询中命名我的表,如下所示:
FROM Case_Calls Calls
使用这个其他名称,我能够根据子查询进行过滤:
IIF( Calls.[ID] <> (select top 1 [ID] from Case_Calls where [Case ID] = Calls.[Case ID]), '', Cases.[Creator]) As [Case Creator]
这个解决方案给了我我想要的结果:) 这是相当丑陋的 SQL,当我处理几十列时很难解析,但它完成了工作!
我仍然很好奇是否有更好的解决方案......
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句