2014-09-29 18 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] 
) 
相关问题