2016-07-27 11 views
0

私は3列と500行のテーブルを持っています。このテーブルのデータを別のテーブルの特定のパターンで表示する必要があります。テーブルのデータを特定のパターンで別のテーブルに表示する方法

Col1 Col2 Col3 

Item1 Item2 Item3 

Item4 Item5 Item6 

これはあなたの問題を解決パターン -

item1 item2 item3 

item2 item1 item3 

item3 item1 item2 

item4 item5 item6 

item5 item4 item6 

item6 item4 item5 
+0

を? –

答えて

0

を以下に表示される出力。

Create table #temp (one nvarchar(50),two nvarchar(50), three nvarchar(50)) -- Source Table 
Create table #temptarget (one nvarchar(50),two nvarchar(50), three nvarchar(50)) -- Target Table 
Insert into #temp -- Insert into Source Table. already you have 
values('item1','item2','item3') 
Insert into #temp 
values('item4','item5','item6') 
Insert into #temp 
values('item7','item8','item9') 

Declare @RowCount AS INT 
Declare @currRowIndex AS INT = 1 -- Current Row Index 
select @RowCount = COUNT(*) from #temp -- No Of Rows 

WHILE (@currRowIndex <= @RowCount) 
BEGIN -- Insert into target table 
Insert into #temptarget 
select t.one, t.two,t.three from 
(select ROW_NUMBER()OVER(Order By one) AS RNo,* from #temp) t Where t.RNo = @currRowIndex 
UNION 
select t.two, t.one,t.three from 
(select ROW_NUMBER()OVER(Order By one) AS RNo,* from #temp) t Where t.RNo = @currRowIndex 
UNION 
select t.three, t.one,t.two from 
(select ROW_NUMBER()OVER(Order By one) AS RNo,* from #temp) t Where t.RNo = @currRowIndex 
SET @currRowIndex +=1 
END 
SELECT * FROM #temptarget 
1

SQLセットが順序付けられていないので、あなたが試すことができます:

WITH Source AS 
(
    SELECT * FROM (VALUES 
    ('Item1', 'Item2', 'Item3'), 
    ('Item4', 'Item5', 'Item6')) T(Col1, Col2, Col3) 
) 
SELECT Col1, Col2, Col3 FROM Source 
UNION ALL 
SELECT Col2, Col1, Col3 FROM Source 
UNION ALL 
SELECT Col3, Col1, Col2 FROM Source 

あなたが順序を維持する必要がある場合は、次のクエリを参照してください。あなたがしようとしているものを

WITH Source AS 
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) GroupNumber FROM (VALUES 
    ('Item1', 'Item2', 'Item3'), 
    ('Item4', 'Item5', 'Item6')) T(Col1, Col2, Col3) 
),Numbered AS 
(
    SELECT GroupNumber, 1 SecondaryGroup, Col1, Col2, Col3 FROM Source 
    UNION ALL 
    SELECT GroupNumber, 2, Col2, Col1, Col3 FROM Source 
    UNION ALL 
    SELECT GroupNumber, 3, Col3, Col1, Col2 FROM Source 
) 
SELECT Col1, Col2, Col3 FROM Numbered ORDER BY GroupNumber, SecondaryGroup 
関連する問題