2016-09-06 53 views
1

我得到的錯誤爲:SQL Server的 「排序依據」 和 「行」 在窗口函數子句不能在SQL Server工作2014

Incorrect syntax near 'ROWS'. 

而在SQL服務器2014執行下面的查詢:

select SC_CODE, [Date] , High ,Low, 
           Max(High) over (partition by SC_CODE 
           order by [Date]   
           ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as 7DayHigh, 
           High/Max(High) over (partition by SC_CODE) * 100 as Percentage_wrt_High, 
           Min(Low) over (partition by SC_CODE 
           order by [Date]   
           ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as 7DayLow, 
           Low/Min(Low) over (partition by SC_CODE) * 100 as Percentage_wrt_Low 
from dbo.NSE 

據我所知,Windows文章和此論壇帖子,分區由SQL Server 2012+支持。

screenshot of my Sql server 2014 Help --> About page

請建議,如果要安裝,以便通過條款正確使用分區需要任何插件或更新。或者可能使用的任何解決方法。

補充結論: 如果我註釋掉rows between部分,然後我得到的錯誤是:

Incorrect syntax near 'order'. 

如果我註釋掉order by部分還,查詢被沒有任何錯誤執行。

因此,簡而言之,分區的子句工作正常,但按順序和行子條款添加到查詢時,我得到了上面提到的錯誤。

這是一個非常基本的查詢,但今後,我打算爲分析目的添加更多列,並確定詳細信息,例如過去7天高,過去1個月高,過去52周高,7天移動平均線,1個月移動平均線等

任何可能擴展到我的大範圍的建議/解決方法也歡迎。謝謝。

+0

標識符不能啓動與數字(https://msdn.microsoft.com/en-us/library/ms175874.aspx),他們必須由雙引號或括號分隔。 – Pred

+1

您的屏幕截圖僅顯示SQL Server ** Management Studio **的版本,而不是您正在使用的_server_的版本。 'select @@ version'給你什麼? –

+0

它提供了:微軟的SQL Server 2005 - 9.00.3042.00(英特爾X86) \t 2007年2月9日22時47分07秒 \t版權所有(C)1988-2005微軟公司 \t Express版本在Windows NT 6.1(生成7601:服務包1) – Wacao

回答

1
select 1 as 8jh--this fails 

select 1 as j8h--this works 

select 1 as [8jh]--this works 

如果問的是關於如何擺脫error..using括號[7DayHigh]幫我解析query..so查詢將得到過去語法錯誤..

select SC_CODE, [Date] , High ,Low, 
    Max(High) over (partition by SC_CODE  order by [Date] ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as [7DayHigh], 
    High/Max(High) over (partition by SC_CODE) * 100 as Percentage_wrt_High, 
    Min(Low) over (partition by SC_CODE order by [Date] ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as [7DayLow], 
    Low/Min(Low) over (partition by SC_CODE) * 100 as Percentage_wrt_Low 
from dbo.NSE 
+0

感謝您的快速響應,但即使使用了括號[7DayHigh],也出現了相同的錯誤。另外,正如我提到的問題,當我評論順序和行子句,查詢得到執行,所以列名以數字開頭並不看起來是我的情況下的實際問題。 – Wacao

+0

實際上,只是觀察到,雖然評論順序和行的條款我已經刪除了列名也與評論,所以它緩解了這個錯誤,我能夠執行查詢。因此,以數字開頭的列名在我的查詢中也是一個錯誤,但不幸的是不是我尋找的主要錯誤。 – Wacao