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