簡體   English   中英

將多個表合並為一個表 SQL Server

[英]Merge multiple tables into one table SQL Server

我想將 3 個表合並為一個,以獲取具有以下條件的完整數據

  • 將 3 個表 [test1]、[test2]、[test3] 合並為一個表 [test]
  • 如果合並時,如果一列為空,則從另一個表中選擇
  • Col1 存在於所有 3 個表中

這是我從表 2 合並到測試的示例代碼。

MERGE INTO [dbo].[test] a
USING [dbo].[test2] b ON a.col1 = b.col1

WHEN MATCHED THEN
    UPDATE 
    SET col1 = b.col1,
        col2 = b.col2,
        col3 = b.col3,
        col4 = b.col4
    WHERE col1 = '' OR col2 = '' OR col3 = '' OR col4 = '';

它得到錯誤:

關鍵字“where”附近的語法不正確。

請嘗試使用 COALESCE 函數而不是使用 where 條件。 如果遇到 NULL,則 COALESCE 函數采用下一個值。

    Merge into [dbo].[test] a   
    using [dbo].[test2] b
    on a.col1 = b.col1
    when matched then
    update
    set col2 = COALESCE(a.col2, b.col2),
    col3 = COALESCE(a.col3, b.col3),
    col4 = COALESCE(a.col4, b.col4);

因此,在修改后的代碼中,如果表 [dbo].[test] col2 為 Null,則它從 [dbo].[test2] 中獲取值。 由於您將使用 COALESCE,您將能夠合並任意數量的值。

你能顯示表格結構嗎?

您可以按照此鏈接使用UNION ALL運算符。

https://www.techonthenet.com/sql_server/union.php

OR 混合INNER JOINUPDATE語句結合WHERE子句的條件

暫無
暫無

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

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