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