在SqlServer中查询当前登录的用户

时间:2013-07-17 15:46:40

标签: sql-server sql-server-2008

我有一个用户登录的tblData。在表中,它们可以是IN或OUT。 我想要的是显示当前登录的用户。

enter image description here

4 个答案:

答案 0 :(得分:1)

SELECT *
FROM tblData E
WHERE E.date = convert(date, getdate())
and convert(time, E.time) <= convert(time, getdate())
and E.type = 'IN'
not exists(
    select 'x' from tblData U
    where U.id = E.id
    and U.type = 'OUT'
    and E.date = U.date
    and U.time > E.time
    and convert(time, U.time) <= convert(time, getdate()))

答案 1 :(得分:1)

Declare @a table ([Date] date,[Time] Time(7),[Type] varchar(10),ID int, Location int)

Insert into @a Select '20130101','10:00','IN',280,2
union Select '20130101','11:00','IN',280,2
union Select '20130101','12:00','OUT',280,2
union Select '20130101','12:00','IN',111,2
union Select '20130101','12:00','OUT',1,2
union Select '20130101','13:00','IN',1,2


Select * from @a a2
JOIN
(
Select MAX(Cast([Date] as dateTime)+[Time]) DT,ID
from @a
Group by ID
) b
on b.ID=a2.ID and Cast(a2.[Date] as dateTime)+a2.[Time] = b.DT
Where a2.Type='IN'

答案 2 :(得分:0)

SELECT 
ID,MAX(convert(datetime,DATE)+' '+TIME)  FROM tblData T1 WHERE [Type] = 'IN' AND   convert(datetime,DATE)+' '+TIME>
    (SELECT max(convert(datetime,DATE)+' '+TIME) FROM tblData T2 WHERE T1.ID=T2.ID AND [TYPE]='OUT')
GROUP BY
ID
UNION
SELECT 
ID,convert(datetime,DATE)+' '+TIME  FROM tblData T1 WHERE [Type] = 'IN' AND NOT EXISTS
    (SELECT convert(datetime,DATE)+' '+TIME FROM tblData T2 WHERE T1.ID=T2.ID AND [TYPE]='OUT')

答案 3 :(得分:0)

SELECT 
ID,MAX(QDateTime)  FROM tblData T1 WHERE [Type] = 'IN' AND  QDateTime>
    (SELECT max(QDateTime) FROM tblData T2 WHERE T1.ID=T2.ID AND [TYPE]='OUT')
GROUP BY
ID
UNION
SELECT 
ID, QDateTime  FROM tblData T1 WHERE [Type] = 'IN' AND NOT EXISTS
    (SELECT  QDateTime FROM tblData T2 WHERE T1.ID=T2.ID AND [TYPE]='OUT')