从多个类似的表中获得独特性

tar*_*all 0 sql t-sql sql-server

我有这个查询加入几个表并获得不同的值,它看起来像这样:

SELECT DISTINCT [TrackingCode]
    ,[Opponent]
    ,CONCAT([TrackingCode], ' | ', [Opponent]) AS RowName
    ,[MultiYrEvent] 
    ,[Identifier]
FROM [BUDGET_FY2014].[dbo].[TrackingCodes]

INNER JOIN
(
    SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions]
    WHERE Report='2377010003'
) AS T
ON T.EventCode LIKE CAST(TrackingCodes.TrackingCode AS nvarchar(20))+'%'
ORDER BY TrackingCode ASC
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,相对于Transactions表,我有第一个和第二个年前相同模式的多个Transactions表,我希望看到所有三个表中的不同值.例如,如果我复制/粘贴此查询并更改[Transactions][Transactions_Yr1][Transactions_Yr2],那么我从这些表中获取所需的数据.但是,我想把三者结合起来.如果我尝试加入所有这些,我将得不到任何结果.我有点理解为什么这不起作用,但我不知道从哪里开始:

SELECT DISTINCT [TrackingCode]
    ,[Opponent]
    ,CONCAT([TrackingCode], ' | ', [Opponent]) AS RowName
    ,[MultiYrEvent] 
    ,[Identifier]
FROM [BUDGET_FY2014].[dbo].[TrackingCodes]

INNER JOIN
(
    SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions]
    WHERE Report='2377010003'
) AS T
ON T.EventCode LIKE CAST(TrackingCodes.TrackingCode AS nvarchar(20))+'%'

INNER JOIN
(
    SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions_Yr1]
    WHERE Report='2377010003'
) AS T1
ON T1.EventCode LIKE CAST(TrackingCodes.TrackingCode AS nvarchar(20))+'%'

INNER JOIN
(
    SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions_Yr2]
    WHERE Report='2377010003'
) AS T2
ON T2.EventCode LIKE CAST(TrackingCodes.TrackingCode AS nvarchar(20))+'%'

ORDER BY TrackingCode ASC
Run Code Online (Sandbox Code Playgroud)

任何意见,将不胜感激!

Ren*_*ado 5

尝试使用UNION ALL子句,例如:

SELECT DISTINCT [FILDS] 
 FROM (
    SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions]
    WHERE Report='2377010003'

    UNION ALL

    SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions_Yr1]
    WHERE Report='2377010003'

    UNION ALL

     SELECT * 
    FROM [BUDGET_FY2014].[dbo].[Transactions_Yr2]
    WHERE Report='2377010003'
    )

ORDER BY TrackingCode ASC
Run Code Online (Sandbox Code Playgroud)