我有一个表可以简化到以下列:
[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;
答案 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}})