长话短说,我在NAV工作,它有一个查询对象,但那些不支持UNION。在SQL中,我将通过UNION解决我的问题。是否有一个JOIN可以得到与此相同的结果?
SELECT ID
,'' as 'Location ID'
,[Acc ID]
FROM [dbo].[CRONUS Canada, Inc_$TestCarr]
UNION
SELECT [ID]
,[Location ID]
,[Acc ID]
FROM [dbo].[CRONUS Canada, Inc_$TestCarrAcc]
ORDER BY [ID], [Location ID]
TestCarrAcc的PKey为[ID,位置ID],TestCarr只有[ID]。这是因为TestCarrAcc需要支持每个ID多个。我不能改变这些表格。
基本上我试图保留TestCarr中的行,即使它们与TestCarrAcc(基于ID)匹配。那有意义吗?还有办法吗?如果没有,我有其他解决方案,他们就不会那么优雅。
答案 0 :(得分:1)
您可以将UNION
重写为FULL OUTER JOIN
。
在您的情况下如下。
SELECT DISTINCT COALESCE(tca.ID, tc.ID)AS ID,
CASE WHEN tc.ID IS NULL
THEN tca.[Location ID]
ELSE ''
END AS [Location ID],
COALESCE(tca.[Acc ID], tc.[Acc ID]) AS [Acc ID]
FROM [dbo].[CRONUS Canada, Inc_$TestCarrAcc] tca
FULL OUTER JOIN [dbo].[CRONUS Canada, Inc_$TestCarr] tc
ON 1 = 0;
答案 1 :(得分:0)
将UNION放在视图定义中,然后查询VIEW。