Mysql ток не работает (sql цена акций) - PullRequest
1 голос
/ 21 ноября 2011

Вот оригинальный вопрос: Существует таблица цен акций, которая содержит информацию о сделках одной компании. Он имеет две колонки: метка времени и цена. Они представляют время, когда произошла сделка, и цену продажи. Естественный порядок записей в таблице является случайным и не сортируется по отметке времени.

Вы добавляете еще один столбец (назовем его дельта), в котором вы собираетесь хранить разницу между текущей ценой транзакции и ценой предыдущей транзакции по времени.

Напишите один оператор SQL, который вычислит разницу в цене и заполнит ею столбец дельта во всех строках.

Я пишу sql, как показано ниже, для запуска на mysql, но кажется, что current не поддерживается на mysql, и я не могу двигаться дальше, вот тот, который я написал до сих пор, чтобы вычислить разницу между текущей ценой транзакции и цена предыдущей транзакции по времени:

 SELECT
   [current].timestamp,
   [current].price,
   ISNULL([next].price, 0) - [current].price
   FROM
   stockprice       AS [current]
LEFT JOIN
   stockprice       AS [next]
      ON [next].timestamp = (SELECT MIN(timestamp) FROM stockprice WHERE timestamp > [current].timestamp)

1 Ответ

2 голосов
/ 21 ноября 2011

Вы используете квадратные скобки в качестве разделителей идентификаторов. Этот синтаксис работает только в Microsoft SQL Server и Sybase. Вы должны использовать синтаксис, работающий в MySQL, который по умолчанию заключает в обратные кавычки и двойные кавычки, если вы включаете режим ANSI_QUOTES.

См. Мой ответ на Разные базы данных используют разные кавычки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...