Sql 从另一个表中获取用户的最大日期

Sql 从另一个表中获取用户的最大日期,sql,sum,inner-join,aggregate-functions,Sql,Sum,Inner Join,Aggregate Functions,我有两个表,在一个表中存储用户状态,在第二个日志中存储用户状态 “状态”表 “日志”表 我需要为每个客户获取特定日期间隔(从2020-10-01到2020-11-31)和特定状态(状态=6)的最新日志。所有客户日志都存储在“日志”表中 这是我尝试过的,但没有运气: Select distinct (a.customerId), a.userName, a.serviceId, a.status, max(logDate) FROM status a JOIN logs b WHERE lo

我有两个表,在一个表中存储用户状态,在第二个日志中存储用户状态

“状态”表

“日志”表

我需要为每个客户获取特定日期间隔(从2020-10-01到2020-11-31)和特定状态(状态=6)的最新日志。所有客户日志都存储在“日志”表中

这是我尝试过的,但没有运气:

Select distinct (a.customerId),  a.userName, a.serviceId, a.status, max(logDate)
FROM status a 
JOIN logs b 
WHERE logDate BETWEEN '2020-10-01' AND '2020-11-31' and a.customerId = b.customerId and a.status = 6 group by b.logDate

任何帮助都将不胜感激。

您的
group by
子句已禁用:您需要按所有非聚合列进行分组

select s.customerid, s.username, s.serviceid, s.status, max(l.logdate) as maxlogdate
from status s
inner join logs l
where 
    l.logdate >= '2020-10-01' 
    and l.logdate < '2020-12-01' 
    and l.customerid = s.customerid 
    and s.status = 6 
group by s.customerid, s.username, s.serviceid, s.status
请注意,我已将查询更改为使用有意义的表别名。

(1)标记您正在使用的数据库。(2) 样本数据和预期结果将有所帮助。(3)
DISTINCT
不是一个函数。不保证使用括号。特别令人感兴趣的是
status
表中是否重复
customerId
Select distinct (a.customerId),  a.userName, a.serviceId, a.status, max(logDate)
FROM status a 
JOIN logs b 
WHERE logDate BETWEEN '2020-10-01' AND '2020-11-31' and a.customerId = b.customerId and a.status = 6 group by b.logDate
select s.customerid, s.username, s.serviceid, s.status, max(l.logdate) as maxlogdate
from status s
inner join logs l
where 
    l.logdate >= '2020-10-01' 
    and l.logdate < '2020-12-01' 
    and l.customerid = s.customerid 
    and s.status = 6 
group by s.customerid, s.username, s.serviceid, s.status
group by s.customerid