假设DATETIME和data.id_acq以及cu和id_meas都有索引,则可以尝试使用带有伪列占位符和kludgey MAX()的UNIOn查询。如果您的data.values不是负数,这应该可以工作(如果是,则可以选择一个非常大的负数而不是零作为虚拟占位符值,该数字远远超出了可能的范围):
select FOO.datetime, max(FOO.v1), max(FOO.v2), max(FOO.v3) from ( select acq.datetime, data.value as v1,0 as v2, 0 as v3 from acq inner join data on acq.id = data.id_acq where acq.id_cu=1 and data.id_meas=100 UNIOn select acq.datetime, 0 as v1, data.value as v2, 0 as v3 from acq inner join data on acq.id = data.id_acq where acq.id_cu=2 and data.id_meas=200 UNIOn select acq.datetime, 0 as v1, 0 v2, data.value as v3 from acq inner join data on acq.id = data.id_acq where acq.id_cu=3 and data.id_meas=300 ) as FOO group by FOO.datetime



