Нахождение различия в строках в запросе с помощью SQLite

Нет, это невозможно в Go. Константы Go являются конструкциями времени компиляции, в то время как значения параметров существуют только во время выполнения.

Spec: выражения констант:

Выражения констант могут содержать только операнды константы и оцениваются во время компиляции.

blockquote>

Рекомендуемое чтение: The Go Blog: Константы

6
задан Taryn 16 July 2013 в 20:31
поделиться

1 ответ

Я не знаю, существуют ли некоторые ограничения в SQLite, но можно попробовать следующие утверждения, которые работают в SQL-сервере.

Если разница во времени является постоянной (Вы заявляете, что это - 5 минут), можно записать:

SELECT A.id, A.record_id, A.price, A.time, ISNULL(A.price - B.price, 0) AS difference
FROM Table1 as A 
    LEFT OUTER JOIN Table1 B ON A.record_id = B.record_id AND A.time - B.time = 5

иначе

SELECT A.id, A.record_id, A.price, A.time, ISNULL(A.price - B.price, 0) AS difference
FROM Table1 as A 
    LEFT OUTER JOIN Table1 B ON B.record_id = A.record_id 
         AND B.time = (SELECT MAX(time) FROM Table1 C WHERE C.time < A.time AND C.record_id = A.record_id)

Оператор без соединений следующий

SELECT id, record_id, price, time,
    (SELECT A.price - B.price
        FROM Table1 as B
        WHERE B.record_id = A.record_id AND
            B.time = (SELECT MAX(time) FROM Table1 C WHERE C.time < A.time AND C.record_id = A.record_id)) AS difference
FROM Table1 as A 

Я надеюсь, что один из них поможет Вам.

8
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: