【发布时间】:2016-05-13 13:26:45
【问题描述】:
我正在尝试从数据库中的两个表中重建数据。第一个表(数据)包含时间值和代码。第二个表(信号)包含代码和描述。理想情况下,我希望得到下面显示的结果表,其中列按时间戳分组,行名称更改为描述符文本。
我已经设法使用分组和多个转置来完成这个 SQL 后查询,但这并不能很好地扩展。
是否可以在 SQL 查询中执行所有这些功能?
数据表
TIMESTAMP CODE VALUE
2016-05-11 13:56:47 1000.ME 26.900
2016-05-11 13:56:47 1313.ME 9.1136
2016-05-11 13:56:51 1313.ME 9.1233
2016-05-11 13:56:56 1313.ME 9.1136
2016-05-11 13:57:00 1000.ME 27
2016-05-11 13:57:00 1313.ME 9.1331
信号表
CODE DESCRIPTOR
1000.ME Inlet Thermpcouple
1313.ME Air Flow
结果表
Timestamp Inlet Thermpcouple Air Flow
2016-05-11 13:56:47 26.900 9.1136
2016-05-11 13:56:51 26.900 9.1233
2016-05-11 13:56:56 26.900 9.1136
2016-05-11 13:57:00 27 9.1331
【问题讨论】:
-
在您想要的输出中,为什么第 2 行和第 3 行有 26.900?对于那个时间戳,您没有 Inlet Thermpcouple 的值,那么您如何选择 26.900 而不是 27 或 null?
-
你不能动态地这样做,使用信号表中的行来确定结果集中的列,在普通的 SQL 中。 (除非您想要 XML 格式的输出,否则)。使用固定值,您可以轻松获取该数据,但使用动态值则不行。
-
@AlexPoole - 哈,我很高兴我提到了这一点,否则我将不得不编辑我的帖子。 :-)
标签: sql oracle pivot transpose