2016-01-14 32 views
0

我已經在查詢語句中加入檢查是否存在日期,然後比較

inner join (select uas.UserId, max(uas.[TimeStamp]) as maxDate 
from dbo.UserSt as uas group by uas.UserId) as tb2 
       on tb2.UserId = e.UserId and tb2.maxDate < e.[TimeStamp] 

我怎麼能先檢查是否存在tb2maxDate,然後比較呢?

我需要的,如果的maxDate不從e.[TimeStamp]

+0

您可以請發佈兩個表 – TheGameiswar

+0

@TheGameiswar的示例架構,他們是具有相同UserId的表。另一個是沒有必要的。這太複雜查詢 – gsiradze

+0

如果您可以提供[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve),您更可能得到滿意的答案。如果maxDate不存在,tb2是否會返回記錄,或者是否記錄了帶有空maxDate的記錄?您的查詢是否返回1或一些記錄?有了這種背景,你很可能會收到你正在尋找的答案。 –

回答

0

該表取值存在嘗試是這樣的

left join (select uas.UserId, max(uas.[TimeStamp]) as maxDate 
from dbo.UserSt as uas group by uas.UserId) as tb2 
       on tb2.UserId = e.UserId and 
((tb2.maxDate < e.[TimeStamp] and tb2.maxDate is not null) or 
(e.[TimeStamp]= e.[TimeStamp] and tb2.maxDate is null)) 
0

您可以檢查是否存在的maxDate通過使用聚結:

coalesce(tb2.maxDate, e.[TimeStamp]) -- will return e.[TimeStamp] if tb2.maxDate is null