【发布时间】:2023-04-03 01:07:01
【问题描述】:
我正在尝试创建一个合并两个表的 Join 语句,一个用于员工信息,另一个用于工作角色信息。表结构如下:
表 1
表 2
我想以这样的方式连接这两个表,即 JobKey 和 JobValue 与关联的员工是同一行,而不是创建重复的行。通常,连接语句会创建这样的:
相反,我想要的是这样的:
有没有有效的方法来做到这一点?
编辑: 这是我目前用来加入他们的查询:
select * from testTable1 as a left join testTable2 as b on a.EmployeeName = b.EmployeeName
【问题讨论】:
-
你是如何加入表格的?
-
每位员工是否最多有 2 个 JobKey?那些仅限于 2 个 JobKeys“职责”和“角色”吗?或者还有更多?如果每个员工的 JobKey 数量未知,那么这可能需要 Dynamic Sql。
-
在您想要的输出中似乎有些不对劲。您让 John Doe 完成所有工作,而 Jane 甚至不在结果集中。
-
为什么将名称存储在两次不同的表中?
-
@jarlh 好点。 Table2 应该只有 EmployeeID 作为外键。而不是复制 EmployeeName。可能与 JobKey 相同,这是一个名称。这与规范化的良好做法背道而驰。
标签: sql sql-server