![](/img/trans.png)
[英]MySQL - Join by only append a row of aggregated values from source table to each of selected rows on host table
[英]Turning rows into table with multiple values for each row
我的表由包含数千个条目的列 statename、date、sensorvalue 组成。
5/10/2020 AK 12.4
6/10/2020 AK 11.7
7/10/2020 AK 9.7
8/10/2020 AK 10.0
5/10/2020 AL 5.4
6/10/2020 AL 9.6
7/10/2020 AL 8.3
8/10/2020 AL 11.1
我想生成一个看起来像这样的表:
5-Oct 6-Oct 7-Oct 8-Oct etc
AK 12.4 11.7 9.7 10.0
AL 5.4 9.6 8.3 11.1
OH 12.1 13.7 9.7 13.8
它就像一个支点,但是,分组。 我如何实现这一目标?
谢谢你的帮助!
埃德。
从技术上讲,您应该能够像下面这样转换它:
SELECT
StateName,
SUM((Date = '5/10/2020') * SensorValue) AS `5-Oct`,
SUM((Date = '6/10/2020') * SensorValue) AS `6-Oct`,
SUM((Date = '7/10/2020') * SensorValue) AS `7-Oct`,
SUM((Date = '8/10/2020') * SensorValue) AS `8-Oct`
-- etc.
FROM table
GROUP BY StateName
;
但是,正如本评论中所述,理想情况下应该在 sql 层之上完成这样的数据转换。
就您的数据而言,您可能需要重新考虑输出表,因为数据透视表需要包含数据集中的所有日期。
您可以根据您的传感器进行枢轴转动,这些传感器的数量很少,例如这里。
SELECT ur_date, [AK], [AL]
FROM your_table
PIVOT (
MAX(sensorvalue) FOR [statename] IN ([AK],[AL]))A
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.