I tried some queries and its taking me to almost my result using JOINs. But Please suggest if any better way to do this ?
I have table like this :
Name Number
A 1
B 2
C 3
D 4
E 5
I want the result to be like :
Name Number Name number
A 1 B 2
C 3 D 4
E 5
I have written a query like this :
DECLARE @TempTable1 Table(RowNumber Int, Name varchar(50), Number Int)
DECLARE @TempTable2 Table(RowNumber Int, Name varchar(50), Number Int)
Insert INTO @TempTable1
SELECT ROW_NUMBER() OVER(ORDER BY Name) AS Row, Name, Number
FROM Test
Insert INTO @TempTable2
SELECT ROW_NUMBER() OVER(ORDER BY Name) AS Row, Name, Number
FROM Test
DECLARE @Count INT
SELECT @Count = MAX(RowNumber) FROM @TempTable1
IF ((@Count % 2) = 0)
BEGIN
SELECT Temp1.RowNumber, Temp1.Name, Temp1.Number, Temp2.RowNumber,Temp2.Name, Temp2.Number
FROM @TempTable1 Temp1, @TempTable2 Temp2
WHERE Temp1.RowNumber = (Temp2.RowNumber - 1) AND (Temp1.RowNumber % 2) != 0
END
ELSE
BEGIN
SELECT Temp1.RowNumber, Temp1.Name, Temp1.Number, Temp2.RowNumber,Temp2.Name, Temp2.Number
FROM @TempTable1 Temp1, @TempTable2 Temp2
WHERE Temp1.RowNumber = (Temp2.RowNumber - 1) AND (Temp1.RowNumber % 2) != 0 OR ((Temp1.RowNumber = @Count) AND (Temp2.RowNumber = @Count))
END