多行的SQL平均值

时间:2015-05-19 10:30:11

标签: sql sql-server

我有一个表可以简化到以下列:

[A] | [B] | [C] | [D] | [Value]

根据我的基本查询,我得到3行或4行(有所不同),其中 A B C D < / strong>是相同的,但具有不同的值。现在我想将这3(或4)行合并为一行,平均值而不是单个值。有没有一种简单的方法可以使用SQL平均函数?

代码看起来像这样(将变量重命名为公司政治):

DECLARE @startTime datetime;
DECLARE @endTime datetime;

SET @startTime = '2015-01-26 00:00:00:000';
SET @endTime   = '2015-02-26 00:00:00:000';

SELECT 
table1.A,
table1.B,
table1.C,
table1.D,
table4.E,
table4.F,
table4.VALUE,
table4.G

FROM 
table1
INNER JOIN table2 ON table2.C = table1.C
INNER JOIN table3 ON table3.X = table2.X
INNER JOIN table4 ON table4.Y = table3.Y

WHERE
table1.A > @startTime
AND table1.A < @endTime
AND table4.E = 'something'

ORDER BY table1.A asc;

1 个答案:

答案 0 :(得分:3)

你可以使用

SELECT 
       table1.A,
       table1.B,
       table1.C,
       table1.D,
       avg(table4.value) value,
       avg(table4.e)     e,
       avg(table4.f)     f,
       avg(table4.g)     g
  from ...
 group by table1.A,
          table1.B,
          table1.C,
          table1.D

如果您需要多列的avg值(fe table4.value,table4.e,table4.f,table4.g)作为一个结果列,您应该查看UNPIVOT函数({{ 3}})