Sql 检索4个表的完全外部联接中的可用标题
我需要合并4个不同属性表的输出。所有表都有不同的行数。目前我有以下问题:Sql 检索4个表的完全外部联接中的可用标题,sql,tsql,Sql,Tsql,我需要合并4个不同属性表的输出。所有表都有不同的行数。目前我有以下问题: CREATE VIEW vw_Items AS SELECT a.Countryname ,a.Itemname ,ISNULL(a.Colour,'None') as Colour ,ISNULL(b.Location,0) as Location ,ISNULL(c.Size,0) as Size ,ISNULL(d.Weig
CREATE VIEW vw_Items
AS
SELECT a.Countryname
,a.Itemname
,ISNULL(a.Colour,'None') as Colour
,ISNULL(b.Location,0) as Location
,ISNULL(c.Size,0) as Size
,ISNULL(d.Weight,0) as Weight
FROM ItemColour a
FULL OUTER JOIN ItemLocation b
ON a.Countryname = b.Countryname
AND a.Itemname= b.Itemname
FULL OUTER JOIN ItemSize c
ON a.Countryname = c.Countryname
AND a.Itemname= c.Itemname
FULL OUTER JOIN ItemWeight d
ON a.Countryname = d.Countryname
AND a.Itemname= d.Itemname
所以,问题在于表a中的NULL countryname和Itemname,我认为需要对其进行嵌套,但是有更好的方法来处理这个问题吗
谢谢。我想您可能想要:
SELECT ci.Countryname, ci.Itemname
COALESCE(c.Colour, 'None') as Colour,
COALESCE(l.Location, 0) as Location
COALESCE(s.Size, 0) as Size
COALESCE(w.Weight, 0) as Weight
FROM ((SELECT c.countryname, c.itemname
FROM ItemColour c
) UNION -- on purpose to remove duplicates
(SELECT l.countryname, l.itemname
FROM ItemLocation c
) UNION
(SELECT s.countryname, s.itemname
FROM ItemSize
) UNION
(SELECT w.countryname, w.itemname
FROM ItemWeight w
)
) ci LEFT JOIN
ItemColor c
ON c.countryname = ci.countryname AND
c.itemname = ci.itemname LEFT JOIN
ItemLocation l
ON l.countryname = ci.countryname AND
l.itemname = ci.itemname LEFT JOIN
ItemSize s
ON s.countryname = ci.countryname AND
s.itemname = ci.itemname LEFT JOIN
ItemWeight w
ON w.countryname = ci.countryname AND
w.itemname = ci.itemname ;
提供样本数据和预期结果。解释在结果集中你想要什么<代码>完全连接几乎不需要,而且不清楚您想做什么。有趣。我会查一查再给你回复。谢谢。是的,这比我的更好,我可能有两行用于同一个国家/项目组合,而你的则消除了这个问题,并且工作得更快。6秒对7秒。