2017-03-17 67 views
1

我有一個表阿如下獲取induvidual列的不同值

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

我想爲每列不同的值。 所以我的輸出像

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 | 
+----+-------+---------+