我不知道这个问题的措辞可能会被取消,但这是问题所在。我必须像你在下面看到的表格。我需要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
答案 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
中的另一列。但是,在分割值之前,您需要决定如何加入集合。他们一年又一年加入?或者你可能根本不需要联合查询,但加入它们然后分开?