比较“查询”,然后保存新的select语句的结果

时间:2017-01-11 13:57:27

标签: sql sql-server

Iam尝试进行查询以检查用户是否已登录。 数据存储为2个单独的行,一个称为“in”,当用户登录而另一个“out”时。然后我需要找到所有当前登录但未注销的人。所以我试过比较两个选择语句。这给了我当前登录但未出局的所有人的姓名(UNILOGIN):

select UNILOGIN from timereg where date = CONVERT(DATE,GETDATE(),110) and CHECKEDIN = 'IND'
except
select UNILOGIN from timereg where date = CONVERT(DATE,GETDATE(),110) and CHECKEDIN = 'UD' 

然后我需要在他们签入时找到他们的前1次。如何在一个查询字符串中生成一个可以得到结果的语句?如果可能的话。类似的东西:

SELECT TOP 1 UNILOGIN, TIME from TIMEREG where UNILOGIN = "result of query"

告诉我是否需要详细说明。

1 个答案:

答案 0 :(得分:2)

骨料。每unilogin获得一个结果行,确保它有一个'IND'记录而没有'UD'记录,并选择相关日期的最长登录时间。

select unilogin, max(time)
from timereg 
where date = convert(date, getdate(), 110) 
and checkedin in ('IND', 'UD')
group by unilogin 
having count(case when checkedin = 'IND' then 1 end) > 0
   and count(case when checkedin = 'UD' then 1 end) = 0;