簡體   English   中英

如何合並兩個表中具有某些公共字段的數據

[英]How to merge data from two tables with some common fields

因此,我有兩個表具有相似的數據。 表A中的列與表B中的列匹配,但是具有不同的命名約定,每個表中的列在另一個表中也沒有等效項,不應合並任何行,我需要一個視圖(我認為)這兩個表中的行,但是合並了一些列,以便表A.columnB中的數據和表B.columnF中的數據都最終出現在視圖C.columnD中。 視圖中的列將僅在一個表中具有源,而在另一表的行中將為null。 由於數據庫在多個應用程序之間共享,因此我無法更改任何現有的表結構。 我認為我需要在視圖中使用一堆FULL OUTER JOIN語句,但是我很難確定如何真正實現它。 如果有人能提供一個通用的外觀示例,那么我應該可以從那里得到它。

這是一個不起作用的示例(實際數據庫中JOIN的每一側都有很多列,為便於閱讀而將其截斷):

SELECT
    schedule_block.id as vid,
    schedule_block.reason as vreason,
    schedule_block.when_ts as vwhen,
    schedule_block.duration as vduration,
    schedule_block.note as vnote,
    schedule_block.deleted_ts as vdeleted_when,
    schedule_block.deleted_user_id as vdeleted_user_id,
    schedule_block.lastmodified_ts as vlastmodified_ts,
    schedule_block.lastmodified_user_id as vlastmodified_user_id
FROM schedule_block
FULL OUTER JOIN appointment.appt_when as vwhen ON 1 = 1
FULL OUTER JOIN appointment.patient_id  as vpatient ON 1 = 1
FULL OUTER JOIN appointment.duration as vduration on 1 = 1
FULL OUTER JOIN appointment.deleted_when as vdeleted_when ON 1 = 1

如果我錯了,請糾正我,但我認為我不能使用UNION因為每側的列數不同

您可以執行以下操作:

SELECT ColA, CONVERT(DATE, NULL) AS ColB
FROM T1
UNION ALL
SELECT CONVERT(VARCHAR(10), NULL) AS ColA, ColB
FROM T2

只要確保匹配數據類型即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM