问题描述
我正在读取一个视图,该视图提供了如下数据:
msn | global_device_id | meter_datetime | interval| channel_id | active_energy_pos_t1
==================================================================================================
3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 1 | 72.80300
....
每条记录的channel_id
为1
。我要操纵它。我想对上述数据3 copies
进行精确的virtually
的处理,1st
数据应将channel_id
设置为1
,第二个数据应将channel_id
设置为{ {1}}和第三者应具有2
作为channel_id
,如下所示
3
视图名称为msn | global_device_id | meter_datetime | interval| channel_id | active_energy_pos_t1
==================================================================================================
3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 1 | 72.80300
3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 2 | 72.80300
3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 2 | 72.80300
3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 2 | 72.80300
3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 2 | 72.80300
3798000021| 980021 | 2020-07-29 16:45:00 | 15 | 3 | 72.80300
3798000021| 980021 | 2020-07-29 17:00:00 | 15 | 3 | 72.80300
3798000021| 980021 | 2020-07-29 17:15:00 | 15 | 3 | 72.80300
3798000021| 980021 | 2020-07-29 17:30:00 | 15 | 3 | 72.80300
....
。我该怎么办?
解决方法
您可以使用固定值列表交叉连接视图:
select l.msn,l.global_device_id,l.meter_datetime,l.interval,c.channel_id,l.active_energy_pos_t1
from load_profile_data l
cross join (select 1 channel_id union all select 2 union all select 3) c
,
一种方法使用联合:
ProtoReader
旁注:SELECT msn,global_device_id,meter_datetime,`interval`,channel_id,active_energy_pos_t1
FROM load_profile_data
UNION ALL
SELECT msn,2,3,active_energy_pos_t1
FROM load_profile_data;
是MySQL中的保留关键字。在上面的查询中,我躲在反引号中,但通常应该避免使用保留的关键字来命名数据库对象。
尝试联合:
select msn,meter_datetime . interval,active_energy_pos_t1 from load_profile_data
union
select msn,channel_id +1,channel_id+2,active_energy_pos_t1 from load_profile_data