SQL子查询计数错误

SQL子查询计数错误,sql,tsql,Sql,Tsql,我有一个查询来查找每个员工生产的总计数。当我运行查询时,超出计数的结果是错误的。我真的不确定我错了什么。任何建议都很好 SELECT r1.RegionID, r1.rDate, r1.tCount, r1.sCount, r1.outCount, r1.cm, r1.sCalc + r1.oCalc + r1.tCalc + r1.cmCalc AS dayScore, r1.createPID FROM (SELECT q1.RegionID, ROU

我有一个查询来查找每个员工生产的总计数。当我运行查询时,超出计数的结果是错误的。我真的不确定我错了什么。任何建议都很好

SELECT
  r1.RegionID,
  r1.rDate,
  r1.tCount,
  r1.sCount,
  r1.outCount,
  r1.cm,
  r1.sCalc + r1.oCalc + r1.tCalc + r1.cmCalc AS dayScore,
  r1.createPID
FROM (SELECT
  q1.RegionID,
  ROUND(q1.tCount * 0.363636364, 9) AS tCalc,
  ROUND(q1.sCount * 0.181818182, 9) AS sCalc,
  ROUND(q1.outCount * 0.090909091, 9) AS oCalc,
  ROUND(q1.cm * 0.363636364, 9) AS cmCalc,
  q1.rDate,
  q1.tCount,
  q1.sCount,
  q1.outCount,
  q1.cm,
  q1.createPID
FROM (SELECT
  q1.RegionID,
  q1.rDate,
  q1.tCount,
  q1.sCount,
  q1.outCount,
  q1.cm,
  q1.createPID
FROM (SELECT
  SecurityPrincipal.RegionID,
  CONVERT(NVARCHAR, Ticket.dtCreate, 107) AS rDate,
  COUNT(Ticket.ticketID) AS tCount,
  COUNT(SRO.SROID) AS sCount,
  COUNT(o.NoteID) AS outCount,
  COUNT(cm.NoteID) AS cm,
  Ticket.createPID
FROM CDOC.rpt.Ticket
LEFT OUTER JOIN CDOC.rpt.SRO
  ON SRO.ticketID = Ticket.ticketID
LEFT OUTER JOIN (SELECT
  Notes.NoteID,
  Notes.ticketID,
  Notes.noteCategoryID
FROM CDOC.rpt.Notes
WHERE Notes.noteCategoryID = '24') o
  ON o.ticketID = Ticket.ticketID
LEFT OUTER JOIN (SELECT
  Notes.NoteID,
  Notes.ticketID
FROM CDOC.rpt.Notes
WHERE Notes.noteSubCategoryID = '13'
OR Notes.noteSubCategoryID = '16'
OR Notes.noteCategoryID = '22') cm
  ON cm.ticketID = Ticket.ticketID
INNER JOIN CDOC.rpt.SecurityPrincipal
  ON SecurityPrincipal.pid = Ticket.createPID
GROUP BY CONVERT(NVARCHAR, Ticket.dtCreate, 107),
         SecurityPrincipal.RegionID,
         Ticket.createPID) q1) q1) r1
这一逻辑:

  COUNT(Ticket.ticketID) AS tCount,
  COUNT(SRO.SROID) AS sCount,
  COUNT(o.NoteID) AS outCount,
  COUNT(cm.NoteID) AS cm,
他非常可疑。如果id不为null,那么它们都将返回相同的值。请记住:
count()
统计非空值的数量

我想您只需要
COUNT(DISTINCT)


如果您能提供表模式、示例数据、预期结果和错误结果,将非常有用。
  COUNT(DISTINCT Ticket.ticketID) AS tCount,
  COUNT(DISTINCT SRO.SROID) AS sCount,
  COUNT(DISTINCT o.NoteID) AS outCount,
  COUNT(DISTINCT cm.NoteID) AS cm,