SQL按列值筛选行,并按筛选值创建新列

  • 本文关键字:筛选 创建 新列 SQL mysql sql plc
  • 更新时间 :
  • 英文 :


我在数据库中的一个任务有问题我正在将数据从plc加载到DB(mySql),它们被读取为

id,timestamp,name,value.

我必须以的形式制作

timestamp,value1, value2, value 3 etc

值的过滤需要通过名称值来完成

我的实际选择结果

时间戳12022-02-16 16:38:49PT_TS1>td style="ext-align:right;">21.52022-02-16 16:38:4932022-02-16 16:38:49>PT_TS321.042022-02-16 16:38:49PT_TS4>22.2PT_TS562022-02-16 16:38:50PT_TS6>23.272022-02-16 16:38:5082022-02-16 16:38:50PT_TS8>22.292022-02-16 16:38:50PT_TS_med21.825102022-02-16 16:38:50>Ccl_RH137.8514112022-02-16 16:38:50Ccl_RH2>37.7514122022-02-16 16:38:50vAhu2_设定值>27.0132022-02-16 16:40:25>PT_TS121.5142022-02-16 16:40:25>PT_TS223.2152022-02-16 16:40:25162022-02-16 16:40:25>PT_TS422.2172022-02-16 16:40:25PT_TS5>21.0182022-02-16 16:40:25>PT_TS623.2192022-02-16 16:40:25>PT_TS720.3202022-02-16 16:40:25PT_TS8>td style="ext-align:right;">22.2212022-02-16 16:40:25>PT_TS_med21.825222022-02-16 16:40:25Ccl_RH1232022-02-16 16:40:25Ccl_RH2>37.7697242022-02-16 16:40:25vAhu2_设定值>27.0

好吧,所以我设法做了这样的事情:

SELECT CONVERT('timestamp'(16), @date ,20) AS datetime
group_concat(if(lab_ccl_monitor.Name='PT_TS1',Value, NULL)) as T1,
group_concat(if(lab_ccl_monitor.Name='PT_TS2',Value, NULL)) as T2,
group_concat(if(lab_ccl_monitor.Name='PT_TS3',Value, NULL)) as T3,
group_concat(if(lab_ccl_monitor.Name='PT_TS4',Value, NULL)) as T4,
group_concat(if(lab_ccl_monitor.Name='PT_TS5',Value, NULL)) as T5,
group_concat(if(lab_ccl_monitor.Name='PT_TS6',Value, NULL)) as T6,
group_concat(if(lab_ccl_monitor.Name='PT_TS7',Value, NULL)) as T7,
group_concat(if(lab_ccl_monitor.Name='PT_TS8',Value, NULL)) as T8
from
lab_ccl_monitor
group by
Timestamp ;

它是有效的,但现在我有一个问题,我需要按最近的时间戳连接行。有时我的时间戳在一个周期内是不同的。我的意思是,一个有54秒,第二个有55秒。有办法做到吗

最新更新