Sql 如何提取查询以查找平均值

Sql 如何提取查询以查找平均值,sql,sql-server,Sql,Sql Server,我有这样的桌子 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_NUMB

我有这样的桌子

  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**
如何提取我的查询

使用子查询:

with q as (<your query here>)
select q.*, (tot1 + tot2 + tot3) / 3
from q;
带q作为()
选择q.*(tot1+tot2+tot3)/3
来自q;
试试这个

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
看看这篇文章-