UNION两个表并计算列合并

时间:2012-08-21 17:16:31

标签: sql-server union

我不知道这个问题的措辞可能会被取消,但这是问题所在。我必须像你在下面看到的表格。我需要UNION两个表,但在过程中将Set1Count除以Set2Count。请帮忙。


(注意:我意识到可能还有另一种方法。这里是详细信息。两个表都有完全相同的记录数 - 它们只是基于两种不同的关系构建的。结果集必须具有相同的数量记录作为原件(不是组合,但是单独).Set1Count必须除以Set2Count)


DECLARE @Set1 TABLE
    (
        Set1Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )

DECLARE @Set2 TABLE
    (
        Set2Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )


SELECT * FROM @Set1
UNION 
SELECT * FROM @Set2 

2 个答案:

答案 0 :(得分:2)

我猜这应该做:

DECLARE @Set1 TABLE
    (
        Set1Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )

DECLARE @Set2 TABLE
    (
        Set2Count Int,
        Name varchar(50),
        [Month] Int,
        [Year] Int
    )


SELECT S1.[Name], S1.[Month], S1.Year, Set1Count/NULLIF(Set2Count,0) Div
FROM @Set1 S1
INNER JOIN @Set2 S2
ON S1.[Name] = S2.[Name] AND S1.[Month] = S2.[Month]
AND S1.[Year] = S2.[Year]

请注意,如果两个表上都有相同的记录,这将正常工作,因为我使用的是INNER JOIN。如果情况并非如此,那么您应该使用FULL JOIN

答案 1 :(得分:0)

更改您的第一个选择以包含第二列null as set2Count,并更改您的第二个选择以包含第一个位置null as set1Count中的另一列。但是,在分割值之前,您需要决定如何加入集合。他们一年又一年加入?或者你可能根本不需要联合查询,但加入它们然后分开?