删除表中的重复列完全外部联接
问题描述:
我有两个表A和B.两个表每列有58列。删除表中的重复列完全外部联接
表“A”具有Column1,Column2,Column3,Column4,Column5,A1,A2,A3,...,A53。
表“B”具有Column1,Column2,Column3,Column4,Column5,B1,B2,B3,...,B53。
我已经使用了FULL OUTER JOIN。 而 我有输出,
我的输出表 “MOT” 有列1,列2,栏3,Column4,Column5,A1,A2,A3,...,A53,列1,列2,栏3,Column4 ,列5,B1,B2,B3,...,B53。
我想要下面的输出。
输出表“OT”具有列1,列2,列3,列4,列5,A1,A2,A3,...,A53,B1,B2,B3,...,B53。
所以我不想在输出中出现重复列。
我感谢您的帮助。谢谢。
答
您需要决定是否需要列[Column1,Column2,Column3,Column4,Column5]适当地从表A或B和别名。
实施例: 别名表 'A' 为 'A' 然后
Select
a.Column1,a.Column2,a.Column3, a.Column4, a.Column5, A1, A2, A3,...,A53, B1, B2, B3,...,B53
答
我用回路和产生动态查询。这会从表格中排除B.Column1,B.Column2,B.Column3,B.Column4,B.Column5。
DECLARE @sel VARCHAR(MAX)
DECLARE @columnName VARCHAR(MAX)
DECLARE @temp VARCHAR(MAX)
DECLARE @frm VARCHAR(MAX)
DECLARE @counter INT
SET @counter = 1
SET @sel = 'select A.*';
SET @temp = '';
SET @frm = ' from table';
SET @columnName = ' , B';
WHILE @counter <= 53
BEGIN
SET @temp = @temp + @columnName + cast(@counter as varchar(4));
SET @counter = @counter + 1;
END
SET @columnName = @sel + @temp + @frm;
EXEC(@columnName);
但是如果我要选择a.Column1,a.Column2,a.Column3,a.Column4,a.Column5,A1,A2,A3,...,A53,B1,B2,B3, ...,B53比我必须写所有的列名或我可以从*排除b.Column1,b.Column2,b.Column3,b.Column4,b.Column5。 – Japs
你可以选择一个。*,B1,..,B53 –
我相信你将不得不列出不属于。* –