首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接两个表,但仅包括每个唯一记录的第一个实例中的第一个表中的数据。

连接两个表,但仅包括每个唯一记录的第一个实例中的第一个表中的数据。
EN

Stack Overflow用户
提问于 2017-04-21 15:34:59
回答 2查看 47关注 0票数 0

标题可能会让人困惑。

我有一个案例表,每个案例都可以包含很多任务。为了实现每个任务的不同工作流,我有不同的表,如Case_Emails、Case_Calls、Case_Chats等。

我想要构建一个最终将导出到Excel的查询。在这个查询中,我想列出每个任务,并且这些任务已经通过使用公共格式的另一个表中的UNION连接在一起。对于查询中的每个任务,我只希望与案例关联的第一个任务包含来自case表的详细信息。例子如下:

代码语言:javascript
复制
+----+---------+------------+-------------+-------------+-------------+
| 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上尝试左联接,但我想不出如何从额外的行中筛选出数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-21 17:08:32

发现可以将查询中的表命名如下:

代码语言:javascript
复制
FROM Case_Calls Calls

使用另一个名称,我能够基于子查询进行筛选:

代码语言:javascript
复制
IIF( Calls.[ID] <> (select top 1 [ID] from Case_Calls where [Case ID] = Calls.[Case ID]), '', Cases.[Creator]) As [Case Creator]

这个解决方案给了我我想要的结果:)它是相当丑陋的SQL,当我处理几十个列时很难解析,但是它完成了工作!

我还是很好奇有没有更好的解决办法..。

票数 0
EN

Stack Overflow用户

发布于 2017-04-21 16:02:41

无论什么时候加入,你都会有重复的值。若要删除重复项,请在“选择”中放入“独立”,或在筛选器后放入“组”。这将解决查询任务信息1、2、3中的重复项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43546722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档