2011-10-26 10 views
1

0からテーブルの最大値までの完全な数値スケールを達成したい。SQLで完全なシリーズを実現する方法

私たちは結果に

X Y 
3 11 
5 23 
7 45 
9 1 
10 34 

を言うことができます表示されるでしょう、私は連続番号を構築するために、このクエリを見つけたのは、私たちは、xとy

select x,y 
from t 

という名前の2つのフィールドを持つテーブルTを持っているとしましょう:

With T_Misparim As 

(Select 1 N 
Union All 
Select N+1 N 
From T_Misparim 
Where N<1000) 
Select N 
From T_Misparim 
Option (MaxRecursion 0); 

出典:http://www.sqlserver.co.il/?p=3296

私の一番下の行は、私は 右の外側を与えるために、単一のクエリに2つのクエリを統合んどのように、ある参加:序数CTEと

N X Y 
0 null 0 
1 null 0 
2 null 0 
3 3 11 
4 null 0 
5 5 23 
6 null 0 
7 7 45 
8 null 0 
9 9 1 
10 10 34 

答えて

1

することはできだけLEFT JOIN

N X Y 
0 NULL 0 
1 NULL 0 
2 NULL 0 
3 3 11 
4 NULL 0 
5 5 23 
6 NULL 0 
7 7 45 
8 NULL 0 
9 9 1 
10 10 34 
については

select 3 as X, 11 as Y into #TEST 
insert #TEST values (5,23),(7,45),(9,1),(10,34) 

;with NUMS(n) as (
    select 0 union all 
    select 1 + n from NUMS where n < 50 
) 
select 
    NUMS.n N, 
    T.X, 
    isnull(T.Y, 0) Y 
from NUMS 
    left join #TEST T on (T.X = NUMS.n) 
option (maxrecursion 50) 

関連する問題