2015-11-26 7 views
0

У меня есть таблица с названием reviewdb с столбцами q1, q2, q2.I хочу найти среднее значение q1, q2 и q3 и сохранить эти средние значения в строках. пожалуйста помогите.как преобразовать столбцы в строки в sqlserver

q1 q2 q3 
 
5 4 2 
 
4 3 2 
 
4 5 1 
 

 
find avg of q1,q2, q3 and store avg of q1 in a row and avg of q2 in another row and avg of q3 in the next row. 
 
q average 
 
q1 4.3 
 
q2 4 
 
q3 1.6

ответ

1

Одним из методов является простой union all:

select 'q1' as q, avg(q1) as average from t 
union all 
select 'q2' as q, avg(q2) as average from t 
union all 
select 'q3' as q, avg(q3) as average from t; 
+0

Большое вам спасибо .... он отлично работал –

2
select 'q1' as q, avg(q1) avrg from yourtable 

union all 

select 'q2', avg(q2) from yourtable 

union all 

select 'q3', avg (q3) from yourtable 
1
Select q 
     ,AVG(CAST(Vals AS DECIMAL(10,2))) Average 
from tableName 
    UNPIVOT (vals for q in (q1,q2,q3))up 
Group by q 

или получить два знака после запятой

Select q 
     ,CAST(AVG(CAST(Vals AS DECIMAL(10,2)))AS DECIMAL(10,2)) Average 
from @t 
    UNPIVOT (vals for q in (q1,q2,q3))up 
Group by q 
Смежные вопросы