簡體   English   中英

SQL-OVER子句介於2次之間

[英]SQL - OVER Clause range between 2 times

我試圖使用over函數來計算所有行的當前行的開始和結束日期之間開始的事件數。 即並發計數器。 最終,我將尋找每天或每小時等的最大同時發生事件。

select   FingerPrint
        ,StartDate
        ,EndDate
        ,Num_ConCurrent =   count(FingerPrint) over (
                                                    partition by StartDate
                                                    order by StartDate  
                                                    range between StartDate PRECEDING and EndDate following 
        )
from    #File
group by     FingerPrint
            ,StartDate
            ,Enddate

不幸的是,這似乎不起作用。 雖然我知道我可以簡單地使用自連接,但我認為over子句可能存在另一種方法。

任何幫助,不勝感激。

NB:錯誤消息

消息102,級別15,狀態1,第7行'StartDate'附近的語法不正確。

over子句中的Range參數正在尋找整數值,而不是列引用。 可能有一種方法可以使用over子句,但我也無法使其正常工作。

根據我的經驗,在某個范圍內的日期進行自我聯接非常慢,而且我還沒有找到合適的索引來加快速度。 在這種情況下,我只會在內聯子查詢中使用。

select  FingerPrint,
        StartDate,
        EndDate,
        (select count(FingerPrint)
         from #File F2
         where F2.StartDate between F.StartDate and F.EndDate
        ) 
        as Num_ConCurrent 
        )
from    #File F

對我擁有的某些約會數據進行一些測試,並使用此方法立即執行32,000行約會。 自我加入運行了15秒鍾,然后我停止了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM