Sql 基于条件的计数值,结果不正确
查询返回court=MA的128行,因此mafiledday计数应为128 结果不正确 /******SSMS中SelectTopNRows命令的脚本******/Sql 基于条件的计数值,结果不正确,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,查询返回court=MA的128行,因此mafiledday计数应为128 结果不正确 /******SSMS中SelectTopNRows命令的脚本******/ SELECT dbo.tblCourtRec.CourtLtrsCurr as [Court], dbo.tblSentences.CaseNo as [CaseNo], dbo.tblSentences.DispDate as [DispDate], dbo.tblSentences.DispDa
SELECT
dbo.tblCourtRec.CourtLtrsCurr as [Court],
dbo.tblSentences.CaseNo as [CaseNo],
dbo.tblSentences.DispDate as [DispDate],
dbo.tblSentences.DispDate as [DispMethod],
-- Get totals by Court
(SELECT count(caseno)
FROM dbo.tblCaseFiling
WHERE filedate = CASE
WHEN datepart(weekday, getdate()) = 2
THEN datediff(day, 3, getdate())
ELSE datediff(day, 1, getdate())
END
AND tblcourtrec.CourtLtrsCurr = 'MA') AS MAFiledDaily
FROM
[MF_COURT].[dbo].[tblSentences]
INNER JOIN
dbo.tblCourtRec ON dbo.tblCourtRec.CaseNo = dbo.tblSentences.CaseNo
WHERE
dbo.tblCourtRec.CourtLtrsCurr = 'MA'
AND YEAR(dbo.tblSentences.DispDate) = YEAR(getdate())
AND MONTH(dbo.tblSentences.DispDate) = MONTH(getdate())
ORDER BY
dbo.tblCourtRec.CourtLtrsCurr
样本数据:
Court CaseNo DispDate DispMethod MAFiledDaily
MA M1004861 01/05/2015 DISM 269
MA M1354445 01/05/2015 REVW 269
MA M1354445 01/05/2015 DISM 269
MA M1363238 01/05/2015 DISM 269
MA M1365908 01/05/2015 NAOG 269
最新答案
下面是重新格式化的子查询,只是为了帮助我更好地理解它:
-- Get totals by Court
(select count(caseno)
from dbo.tblCaseFiling
where filedate = CASE
WHEN datepart(weekday,getdate())= 2
THEN datediff(day,3,getdate())
ELSE datediff(day,1,getdate())
END
and tblcourtrec.CourtLtrsCurr = 'MA'
)
假设您的filedate比较是正确的,我认为问题仍然是您在子查询之外引用了一个表,但没有以限制您在子查询中检索的记录的方式引用
外部查询引用表tblCourtRec,并限制返回到dbo.tblCourtRec.CourtLtrsCurr='MA'的记录
您的子查询也引用了tblCourtRec,但它引用的是外部查询中的值。子查询中返回的记录与外部查询中的特定记录之间没有链接。您确实在外部查询中引用了该记录,但没有以任何方式将其连接到tblCaseFiling
假设tblCaseFiling中有一些数据表明该文件处于什么状态,您需要这样一个条款:
where [file date comparison]
and tblCaseFiling.CourtFiledIn = 'MA'
。。。或者像这样,这就是所谓的相关子查询:
where [file date comparison]
and tblCaseFiling.CourtFiledIn = tblCourtRec.CourtLtrsCurr
您可以设置sql fidle吗?或者至少是sql的其余部分?请编辑您的问题并显示第一个查询的全部内容。安,谢谢您的帖子。我用更干净的代码更新了我的帖子。