【问题标题】:How to combine different columns from three different tables into one table?如何将三个不同表中的不同列合并到一张表中?
【发布时间】:2021-02-03 20:33:17
【问题描述】:

请看图片以供参考。我尝试在第一个和第二个 select 语句之间以及第二个和第三个 select 语句之间执行 Union All。所以我做了两个 Union All 但这没有用。 有人可以帮忙吗?

【问题讨论】:

标签: sql sql-server stored-procedures


【解决方案1】:

v_Curing_Toolingcos_workLocator 中的数据如何关联?如果它们不相关,则它们不会在同一行。如果它们是相关的,您需要一个 ID 来加入这些表。

例子:

SELECT MLDNBR, PLTGRN, MOLD, Spec, Left (Spec,6) as 'SpecID', Right (Spec,2) as 'ReleaseID'
FROM [DataWarehouse].[dbo].[v_Curing_Tooling] t
    JOIN [TireTrack].[dbo].[cos_work] w ON t.ToolingID = w.ToolingID
    JOIN [DataWarehouse].[dbo].[Locator] l ON l.LocationID = t.LocationID

不过,我不知道你的表是如何关联的,所以那些 JOIN 子句可能需要正确的连接条件。

查找How To Join SQL Tables

【讨论】:

    【解决方案2】:

    使用union时,列数和列数据类型应该相同。因此,由于您的最后一个查询返回“字符”,因此您必须将其他查询中的同一列转换为字符串:

    SELECT cast(MLDNBR as varchar(100)), cast(PLTGRN as varchar(100)), NULL as ReleaseID
    FROM [DataWarehouse].[dbo].[v_Curing_Tooling] 
    UNION ALL
    SELECT cast(MOLDas varchar(100)), NULL, NULL
    FROM [TireTrack].[dbo].[cos_work]
    UNION ALL
    SELECT Spec, Left (Spec,6) as SpecID, Right (Spec,2) as ReleaseID
    FROM [DataWarehouse].[dbo].[Locator]
    

    【讨论】:

    • 不幸的是,这不起作用,它只将 MLDNBR 和 PLTGRN 以及 Release ID 数据返回到一个表中,但 MLDNBR 和 PLTGRN 的字段名称缺失。 Mold、Spec 和 SpecID 的数据全部丢失。他们都应该在桌子上
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 2014-10-04
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-05
    相关资源
    最近更新 更多