删除表中的重复列完全外部联接

问题描述:

我有两个表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 
+0

但是如果我要选择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

+0

你可以选择一个。*,B1,..,B53 –

+0

我相信你将不得不列出不属于。* –

我用回路和产生动态查询。这会从表格中排除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);