【发布时间】:2018-01-10 16:13:36
【问题描述】:
我有一个 SQL 表,用于存储从自动化流程记录的流程数据。该表存储变量名称、记录值、时间戳。该表如下所示:
VariableName | VariableValue | Timestamp
------------------------------------------
Tag_1 | 1 | Time_1
Tag_1 | 5 | Time_2
Tag_1 | 4 | Time_5
Tag_1 | 8 | Time_7
Tag_2 | 3 | Time_1
Tag_2 | 4 | Time_3
Tag_2 | 5 | Time_6
Tag_2 | 7 | Time_7
...
变量的值在“更改时”记录,因此它们以不同的时间戳出现在表中。
为了能够导出数据并将其用于进一步处理,我们需要对表格进行排序并以不同的形式表示它,即:
Timestamp | Tag_1 | Tag_2
--------------------------
Time_1 | 1 | 3
Time_2 | 5 | -
Time_3 | - | 4
Time_5 | 4 | -
Time_6 | - | 5
Time_7 | 8 | 7
如您所见,表中存在一些表示变量值的“盲点”,这对应于这样一个事实,即此时标签没有记录任何值,即标签值没有变化相对于先前记录的值。
如何使用 SQL 实现这一点?我很可能需要一个具有上述结构的新表。但是,它需要动态创建,因为列数取决于记录的变量数(Tag_1、Tag_2 等)。
创建表和查询数据库不是问题,因为我为此使用了 VB 脚本。但是,我不知道如何制定查询(连接???)以实现该结构...
【问题讨论】:
-
您好。您是否看过或熟悉数据透视表。这应该给你你想要的。查找 SQL PIVOT。
标签: sql sql-server sorting join