2017-03-17 18 views
1

私は各列の個別の値をしたい取得別個の値は

id| Name|Subject  
--|-----|------- 
1 |Mano |Science 
2 |Pavi |Maths  
3 |Mano |Social  
1 |Kalai|Maths 
4 |Kalai|Science 

以下のようなテーブルAを持っています。 私の出力は次のようになります

id|Name | Subject  
--|-----|-------- 
1 |Mano |Science  
2 |Pavi |Maths  
3 |Kalai|Social  
4 |  | 

私はカーソルを使ってみました。しかし、私は必要なものを手に入れませんでした。 誰も助けてくれます。

+0

は、サンプルテーブルデータを行(5、真野、地理)を追加し、結果を調整します。 – jarlh

+0

質問は理にかなっていません。リレーショナルデータベースでは、「名前」と「サブジェクト」が同じ行にあるという意味があります。そのような意味は出力の行に付けられません。この要件はどこから来たのですか? – mathguy

答えて

2

一緒に表示されるものに関係なく、異なる値のリストがほしいと思うようです。これは非常にSQL'ishではなく、行うことができる。

select row_number() over (order by n.seqnum) as firstcol, n.name, s.subject 
from (select name, row_number() over (order by name) as seqnum 
     from t 
     group by name 
    ) n full outer join 
    (select subject, row_number() over (order by subject) as seqnum 
     from t 
     group by subject 
    ) s 
    on s.seqnum = n.seqnum; 
+0

+1この質問に関する最も明白な点に言及してください:要件は、まずリレーショナルデータベースとは関係ありません。 – mathguy

1
select * 

from  (select col,val,dense_rank() over (partition by col order by val) as dr  
      from mytable unpivot (val for col in (name,subject)) u 
     ) pivot (min(val) for col in ('NAME','SUBJECT'))  

order by dr 

+----+-------+---------+ 
| DR | NAME | SUBJECT | 
+----+-------+---------+ 
| 1 | Kalai | Maths | 
| 2 | Mano | Science | 
| 3 | Pavi | Social | 
+----+-------+---------+ 
関連する問題