我有一個這樣的示例表:
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
uj5u.com熱心網友回復:
您需要使用UNIONor 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 Server | 微軟檔案
注意:根據 Aaron 下面的評論,UNION將洗掉重復的行,而UNION ALL將它們包括在內。如果您在單個源行中code1和上具有相同的值,將產生一個輸出行,而將產生兩個相同的輸出行。從您的問題中不清楚您想要哪種行為。code2UNIONUNION ALL
uj5u.com熱心網友回復:
您只需對源表進行一次掃描即可完成此操作。簡單地使用 unpivotCROSS APPLY (VALUES
SELECT
t.id,
t.Name,
v.code
FROM YourTable t
CROSS APPLY (VALUES
(code1),
(code2)
) v(code)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410551.html
標籤:
下一篇:SQL-在同一列中回傳多個值
