我想获取所有用户数据和用户日志详细信息。当用户不在时,日志表中没有日志详细信息。我想获取每天用户的第一个和最后一个打卡时间,但在此查询中,我们将在两个日期之间使用。 当我分别运行第一次和最后一次查询时,我得到了第一个日期的第一个日志和最后一个日期的最后一个日志 请帮助我获取正确的查询以找到正确的值:
SELECT FORMAT(dateadd(SECOND,MIN(nDateTime), '19700101'), 'hh:mm:ss') as ftime,
FORMAT(dateadd(SECOND,MAX(nDateTime), '19700101'), 'hh:mm:ss') as ltime
from BioStar.dbo.TB_EVENT_LOG
where nUserID =10000
and FORMAT(DATEADD(SECOND,nDateTime, '19700101'), 'yyyy-MM-dd') between '2019-08-20' and '2019-08-21'
and nEventIdn=55
当我使用上面的查询时,它将返回用户的第一个日志(第20个)和用户的最后一个日志(第21个)。 但是我想要第20行的第一个和最后一个日志,而第二行中的第21个则是用户的第一个和最后一个日志
SELECT a.sUserID,
a.sUserName,
FORMAT(DATEADD(SECOND, b.nDateTime, '19700101'), 'dd-MM-yyyy') as date,
FORMAT(dateadd(SECOND,MIN(b.nDateTime), '19700101'), 'hh:mm:ss') as ftime,
FORMAT(dateadd(SECOND,MAX(b.nDateTime), '19700101'), 'hh:mm:ss') as ltime
from BioStar.dbo.TB_USER a
INNER JOIN BioStar.dbo.TB_EVENT_LOG b
on (a.sUserID = b.nUserID)
where FORMAT(DATEADD(SECOND,b.nDateTime, '19700101'), 'yyyy-MM-dd') between '2019-08-20' and '2019-08-21'
and b.nEventIdn=55
group by a.sUserID
运行此查询时,显示以下错误:
选择列表中的'BioStar.dbo.TB_USER.sUserName'列无效,因为它既不包含在聚合函数中也不在GROUP BY子句中。