繁体   English   中英

将行转换为每行具有多个值的表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM