![](/img/trans.png)
[英]Oracle SQL - Combine values in the same column in one column in the result set from multiple table
[英]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
您需要使用UNION
或UNION 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
將包括它們。 如果您在單個源行的code1
和code2
中具有相同的值,則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.