私は近づいていると感じています...私の問題は、MOD関数をROW_NUMBER()
関数と組み合わせて使用していますが、私が間違っていることを理解していない。テーブルに行ID列がないSQL Server 2008のクエリ結果からn番目の行を選択
私はすべての「n番目」の行を選択する方法が必要なので、ROW_NUMBER()
関数を使用しています。私はこれについての他のページを読んでいます(SQLを作成するために使用しました)...しかし、SQL Serverからエラーが発生しています。私は同時にテーブルスナップショットで異なる証券の価格を取得するには、内部テーブルの結合(テーブルTick_OneMin
、H1
とH2
)の2つのインスタンスが必要です。
私はMOD
機能を持つ行をコメントアウトした場合... SQLは罰金実行...しかし、私はそれを置けば.... SQL Serverはエラーメッセージをスロー:
表現条件が期待される文脈で指定された非ブール型の「MOD」の近くにある。ここで
は
表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
私のテーブルには、次の(3列を持つ1台)のように見えます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
での私の試みで、次の出力を作成したい。
Date - ZN.Price - ES.Price
==== ======== ========
1/3/2012 - 132.5 - 1470
1/3/2012 - 133 - 1475
なぜSQL SErverがエラーをスローしているのですか?
また、SQL Serverは '%'演算子 - **ではなく 'MOD'関数を使用します.... –
@marc_sはい、ありがとう –
これは完璧に機能しました...ありがとうございます。 – user1991508