Для запроса, как я его ввел, ответом будет то, что поле VTIME должно быть псевдонимом в обоих подзапросах, тогда запрос будет работать. При вводе я получаю ошибку -104 в части VTIME + 1440
, но если я заменю первый саб на VTIME as MyTime
, а второй на (VTIME + 1440) as MyTime
, он будет работать нормально.
select Q1.* from (select VDATE, VTIME AS MyTime, STAT, PRICURR, SECCURR
from "DevHistory"
where DEVID = :ID and VDATE = :DAY1 order by VDATE, MyTime) Q1
union all
select Q2.* from (select VDATE, (VTIME + 1440) AS MyTime, STAT, PRICURR, SECCURR
from "DevHistory"
where DEVID = :ID and VDATE = :DAY2 order by VDATE, MyTime) Q2;
Оболочкавыбор есть, потому что он жалуется на предложения order by
, если я не делаю.
Параметры 2 :ID
работают с FireDAC, оба заполняются идентификатором одного переданного устройства, установленным в Params [0]. Я не пробовал это в других библиотеках БД (у меня есть UniDAC, и я попробую это там, когда у меня будет шанс.)