【发布时间】:2016-10-18 09:03:11
【问题描述】:
我感觉如此接近......我认为我的问题是我如何使用 MOD 功能与ROW_NUMBER() 功能相结合,但我不明白我做错了什么。
我正在使用ROW_NUMBER() 函数,因为我需要一种方法来选择每个“第n”行。我已经阅读了关于这个的其他页面(我用它们来创建我的 SQL)......但是我从 SQL Server 收到一个错误。我需要内部表连接(表Tick_OneMin、H1 和H2 的2 个实例)来同时获取不同证券的价格快照。
如果我用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 会抛出错误吗?
【问题讨论】:
标签: sql-server