たとえば、最初のテーブルがあり、最初のテーブルを使用して 2 番目のテーブルを埋めたいとします。
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 Nath 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
ここで、「SECOND AS」の後に何を使用しますか。「THIRD AS」と書いてみましたが、どうやらそのようなコマンドは存在しないので、検索した後、「NEXT AS」を使用して3行目を書くことができましたが、4行目を挿入する方法についてはまったくわかりません。
A、B、C、D のそれぞれに対して 4 つの挿入コマンドを簡単に記述できることはわかっていますが、次の順序で not コードを取得することは望ましくありません。
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を使ってやりたい。助けてください。