简体   繁体   中英

Select from a third table based upon a union result

I'm currently selecting Material from two tables using a union operator:

QUERY

SELECT Material 
FROM (
       SELECT Material    
       FROM DP_Historical_Data 
       EXCEPT SELECT Material 
       FROM SAS_GLOBE_Material_to_SASBaseItem
     ) HD
 UNION SELECT Material 
 FROM (
        SELECT Material 
        FROM DP_Historical_Data_Archive 
        EXCEPT SELECT Material 
        FROM SAS_GLOBE_Material_to_SASBaseItem
      ) HDA

What I want to do now is use the retrieved Materials to get a description from a third table, ie:

Select MaterialDescription 
from Description_Table DT 
Where DT.Material = UnionResult.Material

Is there any tidy way to do this?

Select UnionResult.Material, DT.MaterialDescription 
FROM Description_Table DT 
JOIN
(    
    SELECT Material FROM 
    (
       SELECT Material 
       FROM DP_Historical_Data 
       EXCEPT 
       SELECT Material 
       FROM SAS_GLOBE_Material_to_SASBaseItem
    ) HD
    UNION 
    SELECT Material 
    FROM 
    (
       SELECT Material 
       FROM DP_Historical_Data_Archive 
       EXCEPT 
       SELECT Material
       FROM SAS_GLOBE_Material_to_SASBaseItem
    ) HDA
) UnionResult ON DT.Material = UnionResult.Material
SELECT DT.MaterialDescription
FROM Description_Table DT
INNER JOIN (
    SELECT Material
    FROM (
        SELECT Material
        FROM DP_Historical_Data

        EXCEPT

        SELECT Material
        FROM SAS_GLOBE_Material_to_SASBaseItem
        ) HD

    UNION

    SELECT Material
    FROM (
        SELECT Material
        FROM DP_Historical_Data_Archive

        EXCEPT

        SELECT Material
        FROM SAS_GLOBE_Material_to_SASBaseItem
        ) HDA
    ) unires
WHERE DT.Material = unires.Material
CREATE VIEW UnionResult AS
    (
    SELECT Material FROM (SELECT Material FROM DP_Historical_Data EXCEPT SELECT Material
    FROM SAS_GLOBE_Material_to_SASBaseItem) HD
    UNION 
    SELECT Material FROM
         (SELECT Material FROM DP_Historical_Data_Archive EXCEPT SELECT Material FROM 
          SAS_GLOBE_Material_to_SASBaseItem) HDA
    )

Select MaterialDescription from Description_Table DT,UnionResult
Where DT.Material = UnionResult.Material

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM