簡體   English   中英

SQL 服務器在同一張表上將多列合並為1列

[英]SQL Server combine multiple column into 1 column on the same table

我有一個這樣的示例表:

  id |  Name   | code1 | code2
   ------------------------------
  1  |  John   |  001  |  AC2
  2  |  Anna   |  002  |  AH5
  3  |  Brad   |  003  |  BB1

我想將列 code1 和 code2 (以及另一列,如果有的話)合並為 1 列,並在表中的另一列上復制數據,因此它會產生如下結果:

  id |  Name   | code 
   -------------------
  1  |  John   |  001  
  1  |  John   |  AC2  
  2  |  Anna   |  002  
  2  |  Anna   |  AH5  
  3  |  Brad   |  003  
  3  |  Brad   |  BB1 

您需要使用UNIONUNION ALL

SELECT
    id,
    Name,
    code1 As code
FROM
    YourTable

UNION

SELECT
    id,
    Name,
    code2 As code
FROM
    YourTable

ORDER BY
    id,
    Name,
    code

UNION (Transact-SQL) - SQL 服務器 | 微軟文檔

注意:根據 Aaron 下面的評論, UNION將刪除重復的行,而UNION ALL將包括它們。 如果您在單個源行的code1code2中具有相同的值,則UNION將生成單個 output 行,而UNION ALL將生成兩個相同的 output 行。 從您的問題中不清楚您想要哪種行為。

您只需對源表進行一次掃描即可完成此操作。 只需使用CROSS APPLY (VALUES

SELECT
  t.id,
  t.Name,
  v.code
FROM YourTable t
CROSS APPLY (VALUES
    (code1),
    (code2)
) v(code)

暫無
暫無

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

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