SQL QUERY获取两个日期范围之间的特定列的计数

时间:2012-04-24 09:45:53

标签: sql

这里我对sql查询有疑问。

在这种情况下,我有一个名为tblcrime的表:我们将在这里得到总和(犯罪)我跟踪MainID和sum(犯罪)查询将是这样的:

 SELECT sum(o.crimeID) as crimeNumber,u.UserID
    from tblcrime o
    inner join tblSubContractor ts on
    o.MainID=ts.SubContractorID

从这里开始,我将使用这些tblUSER

来查看subcontractorID
 inner join tblUser u on
    u.SubContractorID=ts.SubContractorID

我怀疑到达此为止,我将得到犯罪总额和适当的用户数。例如。

UserID : 520 Totalcrime:6000

但还有另一个名为tblAudit的表,我们将获得logondate和userid,这是跟踪...所以我想基于userlogin(userid)显示犯罪......自上次登录以来。因此,当用户登录时,它会在jquery通知中显示“自上次登录后已完成60项犯罪”。

我想要查询格式的帮助。

3 个答案:

答案 0 :(得分:0)

我不确定,如果我理解你的问题,但可能是这样,你在寻找什么?

SELECT sum(o.crimeID) as crimeNumber,u.UserID
from tblcrime o
inner join tblSubContractor ts on o.MainID=ts.SubContractorID
inner join tblUser u on u.SubContractorID=ts.SubContractorID
where 
u.UserID = theOneYouAreLookingFor
AND crimedate >= lastLogOn
GROUP BY u.UserID

答案 1 :(得分:0)

首先,我怀疑对SUM函数的调用应该是COUNT。前者将指定列的值加在一起,而后者则为行计数。

其次,您的tblcrime表是否存储了添加犯罪的日期?我会假设它,我们称之为DateAdded列。以下查询应该有效:

SELECT      COUNT(o.crimeID) AS crimeNumber,
            u.UserID
FROM        tblcrime o
INNER JOIN  tblSubContractor ts on o.MainID = ts.SubContractorID 
INNER JOIN  tblUser u on u.SubContractorID = ts.SubContractorID
INNER JOIN  tblAudit a on a.userid = u.UserID
WHERE       a.logondate < o.DateAdded
GROUP BY    u.UserID

答案 2 :(得分:0)

您可以找到该用户的最大审核日期:

SELECT sum(o.crimeID) as crimeNumber,u.UserID
    from tblcrime o
    inner join tblSubContractor ts on
    o.MainID=ts.SubContractorID
inner join tblUser u on
    u.SubContractorID=ts.SubContractorID
where o.crimeDate >= (select max(auditdate) from tblAudit where UserID = @UserID)