从Full Outer Join中删除表中的重复列

时间:2016-11-14 19:22:00

标签: sql sql-server join

我有两个表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" Column1,Column2,Column3,Column4,Column5 ,A1,A2,A3,...,A53, Column1,Column2,Column3,Column4,Column5 ,B1,B2 ,B3,......,B53。

我想要关注输出。

输出表" OT"有 Column1,Column2,Column3,Column4,Column5,A1,A2,A3,...,A53,B1,B2,B3,...,B53

所以我不希望输出中有重复的列。

感谢您的帮助。谢谢。

2 个答案:

答案 0 :(得分:2)

您需要确定是否需要列A [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

答案 1 :(得分: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);