tsql - 在展开字段上连接表
问题描述
我有一张包含以下条目的表
表A
id|companyCode|AbroadCode|CompName
1| 1234| 99|BallComp
和另一个表
表B
id|compCode|EmpName
1| 991234|Peter
2| 991234|Thomas
3| 1234|Frank
4| 1234|Marcus
问题是,对于表 A 中的每家公司,只有一个条目,如果该公司在国外有一个部门,它会在 AbroadCode 列中得到 99。在表 B 中,每个员工都有一个条目,但根据该人是否为外部部门工作而分开(展开)。我知道这应该以不同的方式设置,但我以这种方式继承了它,现在如果不做很多工作,我就无法改变结构。
我想要做的是我想加入表格。所以最后我会得到这个:
id|compCode|EmpName|Compname
1| 991234|Peter |BallComp
2| 991234|Thomas |BallComp
3| 1234|Frank |BallComp
4| 1234|Marcus |BallComp
谁能帮我解决这个问题?我能够通过两个不同的查询(compcode 和 Abroadcode 上的 concat())解决它,但不是在一个查询中。
解决方案
你可以试试这个:
声明的表变量中的一些示例数据
DECLARE @tblA TABLE(id INT,companyCode INT,AbroadCode INT,CompName VARCHAR(100));
INSERT INTO @tblA VALUES(1,1234,99,'BallComp')
,(2,123,324,'Test') ;
DECLARE @tblB TABLE(id INT,compCode INT,EmpName VARCHAR(100));
INSERT INTO @tblB VALUES
(1, 991234,'Peter')
,(2, 991234,'Thomas')
,(3, 1234,'Frank')
,(4, 1234,'Marcus')
,(5, 123,'Test1' )
,(6, 324123,'Test2' );
--查询
SELECT *
FROM @tblA a
INNER JOIN @tblB b ON b.compCode=a.companyCode
OR b.compCode=CAST(CONCAT(a.AbroadCode,a.companyCode) AS INT);
简而言之:
- 我们加入任何反对平等
comp(any)Code
... - ...或反对 AbroadCode 和 companyCode 的组合。
推荐阅读
- c - 使用哈希表对字典中的每个单词进行排序......由于某种原因,链表填充了相同的单词
- azure - 注册期间在联系信息中存储“电子邮件” - Azure AD B2C 自定义策略
- android - 如何在主题中设置 TextInputLayout 的hintTextColor 样式?
- html - 如何在 div 元素上触发点击事件并显示其相邻元素 JQUERY
- flutter - PageView 导航按钮需要点击 2 次才能实际工作 (Flutter)
- java - 如何在 Neptune 中使用 Gremlin 会话?
- python - 我的 Python 代码有问题。有错误,“未解决的参考”
- github - Github 工作流如何读取托管在同一 GitHub 帐户上的另一个私有存储库中的文件?
- r - 如何从 R 中的对比中删除一个因子?
- python - 从 pytorch 中的附近像素创建新通道