Sql server 日期范围中的SQL Count子查询报告的是所有结果,而不是单个结果

Sql server 日期范围中的SQL Count子查询报告的是所有结果,而不是单个结果,sql-server,Sql Server,我正在尝试获取一个子查询,该子查询将统计在特定时间段内向个人收取的案件数量。而当前版本报告的是在这段时间内计算的所有费用,而不仅仅是个人的费用。如何修改以下查询以输出与每个BookedLastName关联的唯一tblCsCases.CauseNumber的计数?我需要选择的BookedLastName受通用名称的限制,其中包括ChargeDescription、规约和ChargeLanguage,但同样的限制不应适用于CrimeCount,该限制应仅限于日期 SELECT substr

我正在尝试获取一个子查询,该子查询将统计在特定时间段内向个人收取的案件数量。而当前版本报告的是在这段时间内计算的所有费用,而不仅仅是个人的费用。如何修改以下查询以输出与每个BookedLastName关联的唯一tblCsCases.CauseNumber的计数?我需要选择的BookedLastName受通用名称的限制,其中包括ChargeDescription、规约和ChargeLanguage,但同样的限制不应适用于CrimeCount,该限制应仅限于日期

SELECT
     substring (tblCsCases.FileNumber,4,6) AS [FileNumber]
    ,tblCsCharge.ChargeCode
    ,tblCsCases.BookedLastName
    ,tblCsCases.BookedFirstName
    ,(SELECT COUNT(tblCsCases.CauseNumber)
        FROM tblCsCases
        WHERE tblCsCases.IssuedDate >= @EndDate
        AND tblCsCases.IssuedDate <= GETDATE()) AS CrimeCount
FROM
tblCsCases
INNER JOIN tblCsCharge 
    ON tblCsCases.FileNumber = tblCsCharge.FileNumber
WHERE tblCsCases.IssuedDate >= @StartDate
AND
tblCsCases.IssuedDate <= @EndDate
AND
tblCsCharge.Statute IN (N'571.030')
AND
tblCsCharge.ChargeDescription LIKE '%sub%'
AND
tblCsCharge.ChargeLanguage LIKE '%exhibit%'

ORDER By
tblCsCases.BookedLastName

您需要将您的计数链接到BookedLastName/BookedFirstName或其他标识人员的唯一标识符。为此,需要使用一两个表别名。因此,请尝试以下查询:

SELECT
     substring (Cases.FileNumber,4,6) AS [FileNumber]
    ,Charge.ChargeCode
    ,Cases.BookedLastName
    ,Cases.BookedFirstName
    ,(SELECT COUNT(c2.CauseNumber)
        FROM tblCsCases c2
        WHERE c2.IssuedDate >= @EndDate
            AND c2.IssuedDate <= GETDATE()
            AND c2.BookedLastName = Cases.BookedLastName
            AND c2.BookedFirstName = Cases.BookedFirstName
        ) AS CrimeCount
FROM tblCsCases as Cases
INNER JOIN tblCsCharge as Charge
    ON Cases.FileNumber = Charge.FileNumber
WHERE 
    Cases.IssuedDate >= @StartDate
    AND Cases.IssuedDate <= @EndDate
    AND Charge.Statute IN (N'571.030')
    AND Charge.ChargeDescription LIKE '%sub%'
    AND Charge.ChargeLanguage LIKE '%exhibit%'
ORDER By
    Cases.BookedLastName

这管用!我不得不改变所选的列,使其能够正常工作。显然,IssuedDate为null的方式太频繁了,但是…哦,天哪,它工作了!几个星期以来,我一直试图自己解决这个问题!!另一方面,为什么在原始查询中为TBLCSCASE使用别名,在子查询中使用另一个别名可以实现这一点?如果不使用别名,查询分析器无法分辨您引用的是外部还是内部“表”。另外,我认为代码看起来更干净,别名也不错。谢谢你,维吉尔。这在将来也会有很大的帮助!很高兴能帮上忙,@jakoftales。