2014-02-28 34 views
0

任何人可以用OverPartition幫助我的case語句以上(按分區)困擾

我試圖表現出對YStvs.visitorID沒有stse.SessionID的。

我的第一行工作正常,但無法獲得第二行的工作。

сase 
    when stse.datetimeselected < max(stse.datetimeselected) Over (partition by Stvs.visitorID) then 'N' 
    when stse.SessionID is null Over (partition by Stvs.visitorID) then 'Y' 
end as 'Y/N' 

回答

0

CASE中的每一行都是單獨評估的。因此,根本不需要OVER條款。

如果您想保證沒有NULLs,請考慮使用ELSE 'Y'

我的版本:

Case 
when stse.datetimeselected < max(stse.datetimeselected) Over (partition by Stvs.visitorID) then 'N' 
when stse.SessionID is null then 'Y' 
END as 'Y/N' 
+0

此問題與我的第2行 - '關鍵字附近的語法不正確''Over'有關。這適用於不存在第一行,因此它不相關。 – Mike

0

嘗試follwing .....

Case 
when stse.datetimeselected < max(stse.datetimeselected) Over (partition by Stvs.visitorID) then 'N' 
when SUM(stse.SessionID) Over (partition by Stvs.visitorID) is null then 'Y' 
END as 'Y/N' 

OR

Case 
when stse.datetimeselected < max(stse.datetimeselected) Over (partition by Stvs.visitorID) then 'N' 
when COUNT(stse.SessionID) Over (partition by Stvs.visitorID) = 0 then 'Y' 
END as 'Y/N' 

OR 使用任何WINDOWING FUNCTIONS代替COUNT(),SUM(),MAX()從如下鏈接 Over Clause

+0

謝謝,但這不會給我每個訪問者的最大會話ID旁邊的'Y'嗎?我需要在所有會話都爲NULL的每個訪問者會話旁邊都有一個'Y'。我也得到 - Msg 8117,Level 16,State 1,Procedure Rep_Recent_Searches2,Line 54 - 感謝您的幫助。 對於max運算符,操作數數據類型uniqueidentifier無效。 – Mike

+0

@MIke我編輯了我的文章。 – sureshhh