Sql select语句,该语句可以对不在主查询中的表中的行进行计数

Sql select语句,该语句可以对不在主查询中的表中的行进行计数,sql,sql-server,Sql,Sql Server,我有一个旧的查询,现在我想计算未包含在主查询中的表中wbs.WBSNodeGuid的行数。我尝试在主select中的一个单独的select语句中使用COUNT()执行此操作,但它当然不理解select COUNT()语句中的wbs。如何计算另一个表中的行数以匹配主查询的当前行的wbs.WBSNodeGuid值 请注意,这个例子比原来的要简单得多,但应该能够大致了解我尝试了什么以及我在寻找什么 SELECT wbs.WBSNodeGuid , (SELECT COUNT(*) FR

我有一个旧的查询,现在我想计算未包含在主查询中的表中wbs.WBSNodeGuid的行数。我尝试在主select中的一个单独的select语句中使用COUNT()执行此操作,但它当然不理解select COUNT()语句中的wbs。如何计算另一个表中的行数以匹配主查询的当前行的wbs.WBSNodeGuid值

请注意,这个例子比原来的要简单得多,但应该能够大致了解我尝试了什么以及我在寻找什么

    SELECT wbs.WBSNodeGuid
    , (SELECT COUNT(*) FROM Marker mkr WHERE mkr.WBSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0)
    FROM WBSNode wbs


Above is a simplified version. Below is the actual that I am trying to add to.

SELECT wbs.WBSNodeText
           , wbs.WBSNodeOverallIndex
           , wbs.WBSNodePath
           --***THIS IS THE COLUMN I'M TRYING TO ADD**** (SELECT COUNT(*) FROM Marker mkr WHERE mkr.WBSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0)
           , insp.WBSNodeInspectionGuid
           , insp.WBSInspInspector
           , insp.WBSInspDate
           , insp.WBSInspNote
           , image0.WBSInspImageBlobPartialPath Image0
           , image1.WBSInspImageBlobPartialPath Image1
           , opt.POptionDefaultValue NetworkImagePath
           , opt2.POptionDefaultValue WBSPathStartDepth
FROM ProjectOption opt
            , ProjectOption opt2
            , WBSNode wbs
            , WBSNodeInspection insp

LEFT OUTER JOIN WBSNodeInspectionImage image0
ON   insp.WBSNodeInspectionGuid = image0.WBSNodeInspectionGuid
AND image0.WBSInspImageIndex = 0
AND image0.Deleted = 0

LEFT OUTER JOIN WBSNodeInspectionImage image1
ON   insp.WBSNodeInspectionGuid = image1.WBSNodeInspectionGuid
AND image1.WBSInspImageIndex = 1
AND image1.Deleted = 0

INNER JOIN Marker mkr ON mkr.WBSNodeGuid = wbs.WBSNodeGuid AND mkr.Deleted = 0


WHERE wbs.WBSNodeGuid = insp.WBSNodeGuid
     AND opt.ProjectOption = 'NetworkPathToProjectImages'
     AND opt2.ProjectOption = 'LevelToStartLocationPortionOfWBSNodePath'

              AND opt.Deleted = 0
              AND opt2.Deleted = 0
              AND wbs.Deleted = 0
              AND insp.Deleted = 0

ORDER BY wbs.WBSNodeText, insp.WBSInspDate
这行吗

SELECT count(distinct wbs.WBSNodeGuid) as [Count]
FROM WBSNode wbs
  INNER JOIN Marker mkr ON mkr.WNSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0
如果这不是你想要的,这个怎么样

SELECT wbs.WBSNodeGuid
  ,count(*) as [Count]
FROM WBSNode wbs
  INNER JOIN Marker mkr ON mkr.WNSNodeGuid = wbs.WBSNodeGuid AND Deleted = 0
GROUP BY wbs.WBSNodeGuid
根据您的新更新,这里的查询应该有效

SELECT wbs.WBSNodeText
           , wbs.WBSNodeOverallIndex
           , wbs.WBSNodePath
           ,(select count (*) from Marker mkr WHERE mkr.WBSNodeGuid = wbs.WBSNodeGuid AND mkr.Deleted = 0 ) as [Deleted Count]
           , insp.WBSNodeInspectionGuid
           , insp.WBSInspInspector
           , insp.WBSInspDate
           , insp.WBSInspNote
           , image0.WBSInspImageBlobPartialPath Image0
           , image1.WBSInspImageBlobPartialPath Image1
           , opt.POptionDefaultValue NetworkImagePath
           , opt2.POptionDefaultValue WBSPathStartDepth
FROM ProjectOption opt
            , ProjectOption opt2
            , WBSNode wbs
            , WBSNodeInspection insp

LEFT OUTER JOIN WBSNodeInspectionImage image0
ON   insp.WBSNodeInspectionGuid = image0.WBSNodeInspectionGuid
AND image0.WBSInspImageIndex = 0
AND image0.Deleted = 0

LEFT OUTER JOIN WBSNodeInspectionImage image1
ON   insp.WBSNodeInspectionGuid = image1.WBSNodeInspectionGuid
AND image1.WBSInspImageIndex = 1
AND image1.Deleted = 0

WHERE wbs.WBSNodeGuid = insp.WBSNodeGuid
     AND opt.ProjectOption = 'NetworkPathToProjectImages'
     AND opt2.ProjectOption = 'LevelToStartLocationPortionOfWBSNodePath'

              AND opt.Deleted = 0
              AND opt2.Deleted = 0
              AND wbs.Deleted = 0
              AND insp.Deleted = 0

ORDER BY wbs.WBSNodeText, insp.WBSInspDate

样本数据和期望的结果将非常有用。在我看来,您的查询很好。原始查询非常复杂,到目前为止,在主查询中连接标记表一直是个问题。而且,它也不起作用,因为还有很多其他的连接,所以不可能像你所展示的那样做一个独特的连接,我不相信。请看我的第二个建议。如果看不到表模式和数据,就很难知道您在寻找什么。另外,我建议不要使用FROM X,Y,Z语法。我会使用FROM X inner join Y on Y.Id=X.Id inner join Z on Z.Id=X.Id等等。我删除了inner join标记,这会弄乱你的查询。啊。虽然我本来没有。一定是在我测试的时候把线交叉了。谢谢你帮我整理。