例如,我有第一個表格,我想用第一個表格填充第二個表格。使用SQL Server中的公用表表達式將表添加到另一個表中的表格
Table A
Name A B C D
-----------------------
name1 a1 b1 c1 d1
name2 a2 b2 c2 d2
Table B (Desired Format)
ID Name Code
----------------------
1 name1 a1
2 name1 b1
3 name1 c1
4 name1 d1
5 name2 a2
6 name2 b2
7 name2 c2
8 name2 d2
按@Surendra納特GM的建議,我想這
DECLARE @counter as int
SET @counter = 1;
;WITH Actual AS
(
SELECT ROW_NUMBER() OVER(ORDER BY IDKEY) as ID FROM Northwind.dbo.Table1
WHERE
),FIRST AS
(
SELECT ((ROW_NUMBER() OVER(ORDER BY IDKEY))*4-3) AS ID,Name, A
FROM Northwind.dbo.Table1
),SECOND AS
(
SELECT ((ROW_NUMBER() OVER(ORDER BY IDKEY))*4-2) AS ID, Name ,B
from Northwind.dbo.Table1
), NEXT AS
(
SELECT ((ROW_NUMBER() OVER(ORDER BY IDKEY))*4-1) AS ID, Name, C
from Northwind.dbo.Table1next
), ________ as
(
SELECT ((ROW_NUMBER() OVER(ORDER BY IDKEY))*4) AS ID, Name, D
from Northwind.dbo.Table1
)
@counter = @counter+1;
)
SELECT * FROM FIRST
UNION ALL
SELECT * FROM SECOND
UNION ALL
SELECT * FROM NEXT
UNION ALL
SELECT * FROM _________
ORDER BY ID
這裏,有什麼事我的 「第二作」 後使用。我試着編寫「THIRD AS」,但顯然沒有這樣的命令存在,所以經過一番搜索後,我可以使用「NEXT AS」編寫第三行,但我完全無法知道如何插入第四行。
我知道可以簡單地寫4個insert命令爲每個A,B,C和d的但我會得到這是不希望以下列順序的不代碼:
Table B(NOT DESIRED IN THIS FORMAT)
ID Name Code
----------------------
1 name1 a1
2 name2 a2
3 name1 b1
4 name2 b2
5 name1 c1
6 name2 c2
7 name1 d1
8 name2 d2
此外,所需的格式可以使用簡單的循環來實現,但是在我正在處理的項目中,大約有200000行,簡單循環方法需要大量時間。所以,我想用CTE來做。請幫忙。
感謝您的回答!不知道未轉義方法 – ni9e
有趣,但這如何保證ID號碼的排序? – Andomar