Kendimi çok yakın hissediyorum ... Sorunum, MOD işlevini ROW_NUMBER()
işleviyle birlikte kullanıyorum ama bence Neyi yanlış yaptığımı anlamıyorum.SQL Server 2008 sorgu sonucundan her nth satırı seçerek tablonun satır kimliği sütununa sahip olmadığı
ROW_NUMBER()
işlevini kullanıyorum çünkü her "nth" satırı seçmenin bir yoluna ihtiyacım var. Bununla ilgili diğer sayfaları okudum (SQL'i oluşturmak için kullandım) ... ama SQL Server'dan bir hata alıyorum. Aynı anda farklı menkul kıymetlerin fiyatını almak için iç tablo birleştirmesine (Tick_OneMin
, H1
ve H2
tablosunun 2 örneği) ihtiyacım var.
Ben MOD
fonksiyonu ile satırını açıklama olursa ... SQL ince yürütür ... ama ben .... SQL koyarsanız Sunucu hata mesajı atar:
bir ifade 'MOD' yakınında bir koşulun beklendiği bir bağlamda belirtilen boolean olmayan türden. İşte
SQL-- benim girişimi My tabloda aşağıdaki (1 3 sütunlu bir tablo)
Tablo 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
ve benziyor
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
Aşağıdaki çıktıyı oluşturmak istiyorum
Date - ZN.Price - ES.Price
==== ======== ========
1/3/2012 - 132.5 - 1470
1/3/2012 - 133 - 1475
SQL SErver bu hatayı neden attığına dair bir fikriniz var mı?
Ayrıca: SQL Server '%' işleç - ** değil ** MOD 'işlevini kullanır .... –
@marc_s evet, teşekkürler –
Bu, mükemmel çalıştı ... teşekkürler. – user1991508