2014-09-29 16 views
3

我一直試圖根據LAG或LEAD函數的結果進行計算。無法將LAG或LEAD的結果轉換爲整數

在INTEGER()轉換函數封裝的功能似乎導致問題與內OVER功能,引發以下錯誤:

無法識別的解析函數:INT64不能使用的OVER()子句

以下爲基礎代碼,工作得很好,但是當我增加一個功能,它會產生一個錯誤:

LEAD(hits.hitNumber,1)OVER(PARTITION BY fullvisitorID,visitid,visitnumber ORDER BY hits.hitNumber DESC)作爲nextHit

,我用產生這種錯誤的代碼如下:

INTEGER(LEAD(hits.hitNumber,1))OVER(PARTITION BY fullvisitorID,visitid ORDER BY hits.hitNumber DESC)作爲nextHit

以下似乎不工作,要麼:

INTEGER(LEAD(hits.hitNumber,1)OVER(PARTITION BY fullvisitorID,visitid ORDER BY hits.hitNumber DESC))作爲nextHit

遇到「」覆蓋「」覆蓋「 「在第8行,第36列。期待:」)「

我真的需要使這個子查詢,使這項工作或有不同的解決方案嗎?

+1

如何在'LEAD()'函數內移動'INTEGER()'?在中,'LEAD(INTEGER(hits.hitNumber,1)...' – 2014-09-29 15:18:15

回答

1

2個可能的解決方案:

喬丹說,帶來的整數()投中鉛():

SELECT LEAD(INTEGER(hits.hitNumber), 1) OVER (PARTITION BY fullvisitorID, visitid, visitnumber ORDER BY hits.hitNumber DESC) as nextHit 
FROM [dataset.ga_sessions_20140107] 

或在您的建議,有一個子查詢:

SELECT INTEGER(nextHit) FROM (
    SELECT LEAD(hits.hitNumber, 1) OVER (PARTITION BY fullvisitorID, visitid, visitnumber ORDER BY hits.hitNumber DESC) as nextHit 
    FROM [dataset.ga_sessions_20140107] 
) 
相關問題