2017-03-09 7 views
0

赤方偏移の複数の列の可能な組み合わせをすべてどのように生成できますか?名とグループのすべての組み合わせについては、例えば列シフト値の赤方偏移積

| name | group | value | 
+-------+-------+-------| 
| a  | 1  | 1  | 
| a  | 2  | 1  | 
| a  | 3  | 1  | 
| b  | 1  | 1  | 
| b  | 2  | 1  | 
| c  | 3  | 1  | 

私は、次を取得したい:

| name | group | value | 
+-------+-------+-------| 
| a  | 1  | 1  | 
| a  | 2  | 1  | 
| a  | 3  | 1  | 
| b  | 1  | 1  | 
| b  | 2  | 1  | 
| b  | 3  | Null | 
| c  | 1  | Null | 
| c  | 2  | Null | 
| c  | 3  | 1  | 

答えて

1

あなたはこのcross joinleft joinを使用して行うことができます。

select n.name, g.group, t.value 
from (select distinct name from t) n cross join 
    (select distinct group from t) g left join 
    t 
    on t.name = n.name and t.group = g.group 
order by 1, 2; 

yの場合は、別の値を取得するためにサブクエリを使用する必要はありません他のテーブルにそれらを持ってください。

関連する問題