1

我不知道我对这个问题的措辞是否有问题,但这就是问题所在。我必须像您在下面看到的那样使用表格。我需要联合这两个表,但在此过程中将 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 
4

2 回答 2

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.

于 2012-08-21T17:26:13.433 回答
0

将您的第一个选择更改为包含第二列,null as set2Count并将您的第二个选择更改为在第一个位置包含另一列,null as set1Count. 不过,在划分值之前,您需要决定如何加入集合。他们是按年和月加入的吗?或者,也许您根本不需要联合查询,而是加入它们然后分开?

于 2012-08-21T17:21:32.980 回答