2014-01-10 125 views
1

我試圖讓StVS.IDSQL incremential計數X與左外連接

例如基於增量爲StSe.ID增量計數期望的結果:

enter image description here

我的SQL至今..

Select top (1000) 

    StVS.ID AS 'SessionID', 
    StSe.ID AS 'Search ID', 

    --I need this to be an incremental count for search count based on Session ID 
    count (StVS.ID) AS 'Search ID sequence' 

From Stats_VisitorSessions StVs 
    Left join Stats_VisitorSearches StSe WITH (NOLOCK) on StSe.SessionID=StVs.SessionID 
    Left join Stats_Visitors StV WITH (NOLOCK) on StV.VisitorID=StVs.VisitorID 
group by StVS.ID, StSe.ID 
Order by StVs.ID 

回答

2

您可以使用ROW_NUMBER() with Partition

編輯 - 道歉,錯過了這一點從LOJ約NULL S:

Select top (1000) 

    StVS.ID AS 'SessionID', 
    StSe.ID AS 'Search ID', 
    CASE WHEN StSe.ID IS NULL 
     THEN 0 
     ELSE ROW_NUMBER() OVER (PARTITION BY StVS.ID ORDER BY StSe.ID ASC) 
     END AS Sequence 

From Stats_VisitorSessions StVs 
    Left join Stats_VisitorSearches StSe on StSe.SessionID=StVs.SessionID 
    Left join Stats_Visitors StV on StV.VisitorID=StVs.VisitorID 
group by StVS.ID, StSe.ID 
Order by StVs.ID; 

我已經訂購了Searchid(假設它的時間遞增),但如果你有一個更好的領域像時間戳,建議順序。