如何解决SQL Server:使用联合添加新列
我有 2 个表,其中有 2 列是共同的,而两个表中有 1 列是不同的
表A
表 B
我需要创建一个具有如下值的公用表
预期输出
我尝试在 Memid 和 Meas 上使用 join 但它重复,因为 2 字段不会创建如图所示的唯一集
我尝试了 union 但后来我得到了这样的结果集
具有不同条件的内连接输出
我如何着手实现预期的结果集?
注意:巧合的是,在这种情况下,两列似乎具有相似的值,但它们可能不同。
基本上我需要创建一个包含 4 列的表,其中 Payer 和 PPayer 列应该相互独立。
解决方法
您不需要使用UNION
,您可以尝试使用INNER JOIN
。
INSERT INTO NewTable (
UserId,DEPT,ROOM,LAB
)
SELECT DISTINCT ta.UserId,ta.DEPT,ta.ROOM,tb.LAB
FROM TableA ta
INNER JOIN TableB tb ON ta.UserId = tb.UserId
AND ta.DEPT = tb.DEPT
,
Shanawaz Khan,试试这个解决方案
声明示例表
DECLARE @A as TABLE(
UserId INT,DEPT VARCHAR(50),ROOM INT)
DECLARE @B as TABLE(
UserId INT,LAB VARCHAR(50))
在创建的表中插入示例记录
INSERT INTO @A (UserId,ROOM) VALUES(1,'A',1),(1,'B',2),2)
INSERT INTO @B (UserId,LAB) VALUES(1,'P'),'Q'),'Q')
为两个表生成 DEPT 明智的行号并插入另一个 Temptable
SELECT ROW_NUMBER() OVER(PARTITION BY A.DEPT ORDER BY A.ROOM ) AS Rno,* INTO #tbl_A FROM @A A
SELECT ROW_NUMBER() OVER(PARTITION BY B.DEPT ORDER BY B.LAB) AS Rno,* INTO #tbl_B FROM @B B
使用内连接的最终查询
SELECT A.UserId,A.DEPT,A.ROOM,B.LAB FROM #tbl_A AS A
INNER JOIN #tbl_B AS B ON A.Rno =B.Rno AND A.DEPT =B.DEPT ORDER BY A.ROOM,B.DEPT
删除创建的模板
DROP TABLE #tbl_A,#tbl_B
输出
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。