2016-07-07 31 views
1

我有臺這樣我怎麼能提取我的查詢找到平均

name M1 m2 Tot 
    a  20 30 50 
    b  10 20 30  
    a  20 10 30 
    a  30 15 45 

通過查詢

SELECT name, 
    ISNULL([1],0) AS tot1, 
    ISNULL([2],0) AS tot2, 
    ISNULL([3],0) AS tot3 
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY name ORDER BY name) RN, 
       name, Total 
     FROM T 
    ) S 
PIVOT (MAX(Total) FOR RN IN ([1],[2],[3])) AS PVT 

我出去放像

name Tot1 Tot2 Tot3 
a  50  30 45 
b  30  0  0 

現在我需要再添加一列以找到平均值。所以,我需要一個像

name Tot1 Tot2 Tot3 **Avg** 
a  50  30 45 **42** 
b  30  0  0 **10** 

我怎麼能提取我的查詢..

+0

退房這個職位 - HTTP: //stackoverflow.com/questions/16968596/how-to-pivot-and-calculating-column-average –

回答

2

試試這個

SELECT name, 
    ISNULL([1],0) AS tot1, 
    ISNULL([2],0) AS tot2, 
    ISNULL([3],0) AS tot3, 
    (ISNULL([1],0) + ISNULL([2],0) + ISNULL([3],0))/3 AS [AVG] 
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY name ORDER BY name) RN, 
       name, tot 
     FROM Example 
    ) S 
PIVOT (MAX(tot) FOR RN IN ([1],[2],[3])) AS PVT 
1

使用輸出的子查詢:

with q as (<your query here>) 
select q.*, (tot1 + tot2 + tot3)/3 
from q;