两个表中存在的字段应存在于新视图中的一个字段下。我发现了一些帖子here,而另一个我已经忘记了使用UNION
和FULL OUTER JOIN
建议做我想做的事情,但我和#39}这是一个很新的,答案有点令人困惑。我想我需要选择不会发生冲突的data
和elong
中的所有字段,然后从UNION ALL
语句中选择其余字段,这些字段组合了表格中的所有字段,FULL OUTER JOIN
如何发挥作用?
我认为需要FULL OUTER JOIN
来保持视图中的行数与每个表中行数的总和相同,但我不太确定。
也许this是我的解决方案?我不确定CROSS JOIN
如何使用相同的字段。
对于那些关心我如何加入这些内容的人,我试图从两个表中获取每一行并将它们放在一个新视图中。我的问题来自重复字段(c2,脚注1,脚注2等)。我希望它们保留为c2,footnote1,footnote2,但它们会继续接收生成的别名。 c2的所有东西都是c2,而不是它来自哪张。
编辑:感谢下面的答案,这就是我现在正在写的内容,它似乎就是我想要的。由于田地的数量,它需要永远;有一个更好的方法吗?什么更自动?
Edit2:这就是整个查询的样子,以防将来有人帮助。我希望有更自动的方法来做到这一点,因为这需要一些时间。感谢所有帮助过的人!
SELECT ID, tableNum, UTC, colNum, c1, c2, null AS c3, c4, colRow, footnote1, footnote2, footnote3, footnote4,
property, orientation, specimenDesign, exposTempMinF AS exposTempFMin, exposTempMaxF AS exposTempFMax,
exposTempRTMinF AS exposTempFRTMin, exposTempRTMaxF AS exposTempFRTMax, designValueRoomTempF_A,
designValueRoomTempF_T99 , designValueRoomTempF_B ,
designValueRoomTempF_S , designValueRoomTempF_Typical, designValueRoomTempF_Estimate,
designValueRoomTempF_Units , conversionFactor, null AS form, null AS thickRangeInMin, null AS thickRangeInMax,
null AS widthRangeInMin, null AS widthRangeInMax, null AS areaInSqrMin, null AS areaInSqrMax, note
FROM dbo.[DesignAllowables-Data] AS data
UNION ALL
SELECT ID, tableNum, UTC, colNum, null, c2, c3 , null, colRow, footnote1, footnote2, null , null ,
property, orientation, specimenDesign, exposTempF_min AS exposTempFMin, exposTempF_max AS exposTempFMax,
exposTempRTF_min AS exposTempFRTMin, exposTempRTF_max AS exposTempFRTMax, designValueRTF_A AS designValueRoomTempF_A,
designValueRTF_T99 AS designValueRoomTempF_T99, designValueRTF_B AS designValueRoomTempF_B,
designValueRTF_S AS designValueRoomTempF_S, null , null ,
designValueRTF_Units AS designValueRoomTempF_Units, conversionFactor, form , thickRangeInMin , thickRangeInMax,
widthRangeInMin , widthRangeInMax , areaInSqrMin , areaInSqrMax , note
From dbo.[DesignAllowables-Elong-RA] AS elong
答案 0 :(得分:2)
您链接的问题不适用于您的问题。
以下是尝试组合的一些形式:
完全外部加入
SELECT
COALESCE(T1.Col1,T2.Col1) As Col1,
COALESCE(T1.Col2,T2.Col2) As Col2
FROM
T1
FULL OUTER JOIN
T2
ON T1.ID = T2.ID
ID
上的匹配项以组合行。
ID
必须在两个表格中都是唯一的,否则您将获得“重复”字样。行
全联盟
SELECT
T.ID,
MAX(T.Col1) As Col1,
MAX(T.Col2) As Col2
FROM
(
SELECT Col1,Col2 FROM T1
UNION ALL
SELECT Col1,Col2 FROM T2
) T
GROUP BY T.ID
有效匹配ID
如果ID不唯一,则不会引入重复项。它将任意选择值的组合
这里是如何返回所有组合行并有选择地组合列的方法。在此示例中,C1仅存在于表T1
中SELECT C1,C2, C3
FROM T1
UNION ALL
SELECT NULL, C2,C3
FROM T2
重要的问题是:每张桌子上都有一个独特的钥匙吗?你需要匹配吗?
答案 1 :(得分:1)
UNION ALL基本上一个接一个地返回两个表。 JOIN基本上返回两个表的列。这是一个过于简单化,但联合组合行和连接组合列。
如果两个表都有相同的列,那么听起来你想要一个UNION。