Пожалуйста, создайте таблицу по следующему запросу:
CREATE TABLE `trade`
(
`order` VARCHAR(10) DEFAULT NULL,
`positionid` INT(11) DEFAULT NULL,
`time` DATETIME DEFAULT NULL,
`volume` FLOAT NOT NULL
)
engine=innodb
DEFAULT charset=latin1;
Вставить запрос
INSERT INTO `trade`
(`order`,
`positionid`,
`time`,
`volume`)
VALUES ('42556',
1111,
'2018-08-15 07:27:44',
2),
('42560',
1111,
'2018-08-18 08:32:47',
2),
('42564',
1235,
'2018-08-21 07:10:12',
5),
('42572',
1235,
'2018-08-23 17:20:26',
2),
('42580',
1235,
'2018-08-23 17:03:30',
3);
Я пробовал ниже запрос:
SELECT b.`order` AS `TICKET`,
b.`time` AS `OPEN_TIME`,
j.`time` AS `CLOSE_TIME`
FROM trade AS b
LEFT JOIN trade AS j
ON b.`positionid` = j.`positionid`
WHERE b.`time` != j.`time`;
Таблица:
Ошибка вывода:
Это изображение показывает повторяющиеся данные:
Требуемый выход:
На этом изображении будет показан требуемый результат:
Описание:
Когда мы открываем торговлю, она сохраняется в таблице торгов. После этого, когда мы закроем сделку, она сделает еще одну запись с другим временем и объемом (если сделка закроется частично, тогда объем будет другим, в противном случае сделка будет закрыта полностью).
Здесь первая запись будет OPEN_TIME, которая хранится как время, а вторая будет CLOSE_TIME. Так как же преобразовать две или более записи в одну запись с помощью OPEN_TIME и CLOSE_TIME?