我的表中的数据名为价格,如下所示;
+--------------------------------------+-------+-------+--------+------------+
| ID | E5 | E10 | DIESEL | DATE |
+--------------------------------------+-------+-------+--------+------------+
| a1978958-a6c4-447b-a90c-3d189da0f831 | 1.289 | 1.269 | 1.059 | 07/22/2017 |
| a1978958-a6c4-447b-a90c-3d189da0f831 | 1.259 | 1.239 | 1.029 | 07/22/2017 |
+--------------------------------------+-------+-------+--------+------------+
我想计算E5,E10,DIESEL的平均值。然后我想在同一个表中合并ID和DATE两列。 (列名和顺序将保持不变)
select ID, DATE, avg(E5) as E5, avg(E10) as E10, avg(DIESEL) as DIESEL from prices group by ID, DATE;
然后我插入了以下查询。
select t1.ID, t2.ID, t1.DATE, t2.DATE from prices as t1 inner join prices as t2 on t1.ID = t2.ID and t1.DATE = t2.DATE;
我无法通过两个上述查询来合并两行。结果将是所有行值中的下图。
+--------------------------------------+-------+-------+--------+------------+
| ID | E5 | E10 | DIESEL | DATE |
+--------------------------------------+-------+-------+--------+------------+
| a1978958-a6c4-447b-a90c-3d189da0f831 | 1.274 | 1.254 | 1.044 | 07/22/2017 |
+--------------------------------------+-------+-------+--------+------------+
有什么想法吗?
提前致谢,
答案 0 :(得分:2)
这是你正在寻找的东西:将结果保存在临时表中,删除实际值,并将avg值插入到同一个表中?
SELECT ID, avg(E5) as E5, avg(E10) as E10, avg(DIESEL) as DIESEL, DATE INTO #TEMP from prices group by ID, DATE
DELETE FROM prices
INSERT INTO prices SELECT * FROM #TEMP
DROP TABLE #TEMP
答案 1 :(得分:1)
你好像要求:
select ID, avg(E5) as E5, avg(E10) as E10, avg(DIESEL) as DIESEL
from prices
group by ID;
这样做你想要的吗?