需要帮助将 TSQL UNION 转换为 JOIN

马蒂马特

长话短说,我在 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 有一个 [ID,Location ID] 的 PKey,TestCarr 只有 [ID]。这是因为 TestCarrAcc 需要支持每个 ID 多个。我不能改变这些表。

本质上,我试图保留来自 TestCarr 的行,即使它们与 TestCarrAcc 匹配(基于 ID)。那有意义吗?甚至有办法吗?如果没有,我有其他解决方案,它们就不会那么优雅。

马丁·史密斯

您可以将 a 重写UNIONFULL 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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章