Czuję się tak blisko ... Myślę, że moim problemem jest to, w jaki sposób używam funkcji MOD w połączeniu z funkcją ROW_NUMBER()
, ale ja nie nie rozumiem, co robię źle.Wybieranie każdego n-tego wiersza z wyniku zapytania SQL Server 2008, w którym tabela nie ma kolumny wiersza id
Używam funkcji ROW_NUMBER()
, ponieważ potrzebuję sposobu na wybranie każdego wiersza "nth". Czytałem inne strony o tym (użyłem ich do utworzenia mojego SQL) ... ale dostaję błąd z SQL Server. Potrzebuję wewnętrznego stołu dołączyć (2 wystąpienia tabeli Tick_OneMin
, H1
i H2
), aby uzyskać ceny różnych papierów wartościowych w tym samym czasie migawki.
Gdybym wykomentuj linię z funkcją MOD
... SQL wykonuje w porządku ... ale jeśli mogę umieścić go w SQL Server .... wyrzuca komunikat o błędzie:
Wyrażenie typu nie-boolowskiego określonego w kontekście, w którym oczekiwany jest warunek, w pobliżu "MOD".
Oto moja próba na 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
Moja tabela wygląda następująco (1 tabeli z 3 kolumny)
Tabela 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
i Chcę utworzyć następujące wyjście:
Date - ZN.Price - ES.Price
==== ======== ========
1/3/2012 - 132.5 - 1470
1/3/2012 - 133 - 1475
Jakieś pomysły, dlaczego SQL SErver rzuca błąd?
Ponadto: SQL Server używa operatora '%' - ** nie ** funkcji 'MOD' ... –
@ marc_s tak, dzięki –
To działało idealnie ... dzięki. – user1991508