私はこのような結果セットがあります。T-SQLのデータ変換
Value1 Value2 100 50 200 30 - - - -
T-SQLでそれを行う方法:
ID Value 1 100 2 50 3 200 4 30 - - - -
を私はそれが次のように変身したいですか?
私はこのような結果セットがあります。T-SQLのデータ変換
Value1 Value2 100 50 200 30 - - - -
T-SQLでそれを行う方法:
ID Value 1 100 2 50 3 200 4 30 - - - -
を私はそれが次のように変身したいですか?
使用この:
select a.Value, b.Value
from
(
select row_number() over(order by ID) [rn], Value
from @t
)a
left join
(
select row_number() over(order by ID) [rn], Value
from @t
)b on b.rn = a.rn + 1
where a.rn % 2 = 1
サンプルデータ:
declare @t table (ID int, Value int)
insert @t values (1,100), (2,50), (3,200), (4,30)
出力:
Value Value
----------- -----------
100 50
200 30
@kumar、よろしくお願いします! –
おそらくジョインの代わりに左ジョインですか?私の例のように5行を試してみてください。 –
@ t-clausen.dk、確かに、それはタスクに依存するかもしれません...私は私の答えを更新しました:-) –
declare @t table (id int, v int)
insert @t values (1, 10)
insert @t values (2, 20)
insert @t values (3, 30)
insert @t values (4, 40)
insert @t values (5, 50)
select t1.v, t2.v
from @t t1
left join @t t2
on t1.id + 1 = t2.id
where t1.id %2 = 1
+1、あなたはギャップについて間違っていました:-) –
IDがあることが保証されて連続した(それらの間のギャップなし)? – Quassnoi
達成しようとしていることと使用しているSQLのバージョンをさらに詳しく記述してください。 –
IDは1から始まり連続しており、ギャップはありません。私はSOL Server 2005を使用しています – kumar