Я чувствую себя так близко... Я думаю, что моя проблема в том, как я использую функцию MOD в сочетании с функцией ROW_NUMBER()
, но я не понимаю, что я делаю неправильно.
Я использую функцию ROW_NUMBER()
, потому что мне нужен способ выбрать каждую строку "nth". Я прочитал другие страницы об этом (я использовал их для создания моего SQL)... но я получаю сообщение об ошибке от SQL Server. Мне нужно включить внутреннее соединение таблицы (2 экземпляра таблицы Tick_OneMin
, H1
и H2
), чтобы одновременно получать цены на разные ценные бумаги.
Если я прокомментирую строку с помощью функции MOD
... SQL выполняет отлично... но если я ее помещу... SQL Server выдает сообщение об ошибке:
Выражение небулевого типа, указанное в контексте, где ожидается условие, рядом с "MOD".
Вот моя попытка SQL -
SELECT
ROW_NUMBER() OVER (ORDER BY H1.CombDateTime ASC) AS RowID,
H1.CombDateTime,
H1.Close_PX as 'TYA_Close',
H2.Close_PX 'ESA_Close'
FROM
Tick_OneMin as H1, Tick_OneMin as H2
WHERE
H1.Ticker = 'TYA'
AND H2.Ticker = 'ESA'
AND H1.CombDateTime >= '12/28/2012 10:00 AM'
AND H1.CombDateTime <= '12/28/2012 10:30 AM'
AND H1.CombDateTime = H2.CombDateTime
AND RowID MOD 4 = 0
-- this "RowID MOD 4 = 0" is throwing an error in SQL Server
ORDER BY
H1.CombDateTime ASC
Моя таблица выглядит следующим образом (1 таблица с 3 столбцами)
Таблица Tick_OneMin
Ticker - CombDateTime - Close_PX
------------------------------------
ES - 1/3/2012 10:00 AM - 1470
ZN - 1/3/2012 10:00 AM - 132.5
ES - 1/3/2012 10:01 AM - 1475
ZN - 1/3/2012 10:01 AM - 133
и я хочу создать следующий вывод
Date - ZN.Price - ES.Price
==== ======== ========
1/3/2012 - 132.5 - 1470
1/3/2012 - 133 - 1475
Любые идеи, почему SQL SErver выбрасывает ошибку?